C# 更新查询从.net代码返回0行。从SQL Developer返回1行
我正在从C代码运行更新查询。同一查询更新Oracle SQL Developer中的1行。但是,更新代码中的0行 我正在使用: Oracle数据库12c、.Net Framework 4.0、Oracle.ManagedDataAccess、用于数据库连接的LDAP 代码:C# 更新查询从.net代码返回0行。从SQL Developer返回1行,c#,sql,.net,oracle-sqldeveloper,oracle12c,C#,Sql,.net,Oracle Sqldeveloper,Oracle12c,我正在从C代码运行更新查询。同一查询更新Oracle SQL Developer中的1行。但是,更新代码中的0行 我正在使用: Oracle数据库12c、.Net Framework 4.0、Oracle.ManagedDataAccess、用于数据库连接的LDAP 代码: OracleConnection appConnection; appConnection.ConnectionString = "User Id=XXX;Password=XXX;Data Source=XXX"; app
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()
如果更新了一行,ExecuteOnQuery应返回值1。现在输出为0。请看这篇有趣的文章:
它需要打开命名参数
OracleCommand cmd = new OracleCommand(query, con.appConnection)
{
CommandType = CommandType.Text,
BindByName = true
};
否则,参数受位置约束。由于您在查询中的参数位置与添加到命令中的参数位置不同,因此无法工作。您是否验证了该行是否在数据库中实际更新?这可能与设置了名为
cmd
的命令,同时执行名为cmdUpdateGen
的命令有关,我认为在设置参数时应该省略冒号:
。(cmd.Parameters[“name”].Value=…
)很抱歉出现此错误。我已将cmdUpdateGen
更正为cmd
@StefanSteinegger是否有省略冒号:
的具体原因?谢谢!卡了两天。