更新查询从.net代码返回0行。从SQL Developer返回1行

时间:2018-04-04 09:56:54

标签: c# sql .net oracle-sqldeveloper oracle12c

我正在从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。

1 个答案:

答案 0 :(得分:0)

看到这个有趣的帖子:https://www.codeproject.com/Articles/208176/Gotcha-sharp-Using-Named-Parameters-with-Oracl

需要打开命名参数。

echo $arr[1];

否则,参数受位置约束。因为查询中的参数位置与将其添加到命令中的位置不同,所以它不起作用。