我正在从C#代码运行更新查询。相同的查询从Oracle SQL Developer更新1行。但是,从代码中更新0行。
我正在使用: Oracle Database 12c,.Net Framework 4.0,Oracle.ManagedDataAccess,LDAP for Database connection
代码:
OracleConnection appConnection;
appConnection.ConnectionString = "User Id=XXX;Password=XXX;Data Source=XXX";
appConnection.Open();
OracleTransaction tran = appConnection.BeginTransaction();
string query = "UPDATE TEST_TABLE SET COMMENT =:comment WHERE NAME =:name"
OracleCommand cmd= con.appConnection.CreateCommand();
cmd.CommandText = query;
cmd.Parameters.Clear();
cmd.Parameters.Add(new OracleParameter(":name", OracleDbType.Varchar2));
cmd.Parameters[":name"].Value = "New Name";
cmd.Parameters.Add(new OracleParameter(":comment", OracleDbType.Varchar2));
cmd.Parameters[":comment"].Value = "New Comment";
var val = cmd.ExecuteNonQuery();
tran.commit()
如果已更新一行,则ExecuteNonQuery应返回值1。现在输出为0。
答案 0 :(得分:0)
看到这个有趣的帖子:https://www.codeproject.com/Articles/208176/Gotcha-sharp-Using-Named-Parameters-with-Oracl
需要打开命名参数。
echo $arr[1];
否则,参数受位置约束。因为查询中的参数位置与将其添加到命令中的位置不同,所以它不起作用。