次のコードは機能しますが、データベースの変更をコミットしません。C#SQLコマンドが正しく終了していません
cnn.Open();
OleDbCommand cmd = cnn.CreateCommand();
cmd.Parameters.Add(new OleDbParameter(":var1", ds.Tables[0].Rows[i]["USERNAME"].ToString()));
cmd.Parameters.Add(new OleDbParameter(":var2","1"));
cmd.CommandText = "UPDATE JCOLEMAN.IBI_TEST SET FLAG=:var2 WHERE USERNAME=:var1";
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cnn.Close();
は、私は以下のスニペットにコードを変更し、エラー
追加情報を取得:ORA-00933:正常に終了していないSQLコマンドを
コード:
cnn.Open();
OleDbCommand cmd = cnn.CreateCommand();
cmd.Parameters.Add(new OleDbParameter(":var1", ds.Tables[0].Rows[i]["USERNAME"].ToString()));
cmd.Parameters.Add(new OleDbParameter(":var2","1"));
cmd.CommandText = "UPDATE JCOLEMAN.IBI_TEST SET FLAG=:var2 WHERE USERNAME=:var1; commit";
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cnn.Close();
私は最後の ";"を忘れてしまったと思ったがmsでも。誰も私がなぜコミットコマンドを受け入れるコードを取得できないのか理解できますか?
cmd.CommandText = "UPDATE JCOLEMAN.IBI_TEST SET FLAG=:var2 WHERE USERNAME=:var1; commit;";
[OleDbTransaction](https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtransaction(v = vs.110).aspx)を直接使用するのではなく、テキストとして「コミット」?また、これがoracleの場合は、問題を引き起こしている可能性のあるOleDbオブジェクトの代わりに、Oracle固有のADO.NET dbオブジェクトを使用する方が良いかもしれません。 – Igor
私は[Oracle Data Provider for .NET](http://www.oracle.com/technetwork/topics/dotnet/index-085163.html)のようなOracle固有のado.netライブラリを使用します.NuGet install = 'Install- Oracle.ManagedDataAccess'をパッケージ化します。これはおそらく、コマンドをOleよりも適切なOracleプラットフォーム構文に変換する方が良いでしょう。 – Igor
私はOleDbが名前付きパラメータを使用していないと考えました。つまり、パラメータはインデックス順でなければなりません。 2つのパラメータ行を切り替えてみてください。 – LarsTech