0

SQL Developer で動作する小さな更新クエリがあります。

UPDATE people
SET months = 8
WHERE number = 599

かなり簡単です。そしてそれは機能します - これは C# でも機能します。問題は、パラメーターを使用したい瞬間です(これは数では機能しますが、月では機能しません)、機能しなくなります。

私はC#でこのコードを持っています:

 using (OracleConnection con = new OracleConnection(connectionString))
        {
            con.Open();
            OracleCommand command = con.CreateCommand();
            command.CommandType = CommandType.Text;
            command.CommandText = "UPDATE people " +
                              "SET months = :months " +
                              "WHERE number = :number";
            command.Parameters.Add(":number", OracleDbType.Int32).Value = number;
            command.Parameters.Add(":months", OracleDbType.Int32).Value = months;

            command.ExecuteNonQuery();
        }

どちらもオラクルの Number 型であり、OracleDbType を Decimal に変更しようとしましたが、ほとんどすべてが成功しませんでした。奇妙なことに、:number パラメータは機能しますが、月は更新されません (クラッシュすることはなく、更新されないだけです)。ただし、:months パラメータを 7 などの静的な値に変更すると、機能します。

4

3 に答える 3

0

コマンドテキストは

 command.CommandText = "UPDATE people SET months = :months WHERE number = :number";

追加したスペースに注意してください

于 2013-08-09T06:33:11.667 に答える