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

标签 c# sql .net oracle-sqldeveloper oracle12c

我正在从 C# 代码运行更新查询。同一查询从 Oracle SQL Developer 更新 1 行。但是,从代码中更新 0 行。

我正在使用: Oracle Database 12c、.Net Framework 4.0、Oracle.ManagedDataAccess、用于数据库连接的 LDAP

代码:

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。

最佳答案

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

需要打开命名参数。

OracleCommand cmd = new OracleCommand(query, con.appConnection) 
{ 
  CommandType = CommandType.Text, 
  BindByName = true 
};

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

关于c# - 更新查询从 .net 代码返回 0 行。从 SQL Developer 返回 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49648087/

相关文章:

c# - 使用 C# 解析 HTML 链接

.net - 将字符串转换为流

c# - 从数据库表中选择两行

c# - 如何通过服务器代码 C# 将 javascript 代码添加到 LinkBut​​ton?

java - 在 c++/java 中创建 sql 查询?

mysql - 如何将可重复的分区作为一个又一个的新分区?

sql查询获取最早日期

.net - 当我定义了隐式强制转换时,为什么Linq Cast <T>操作失败?

.net - sqlclient - 连接超时或命令超时

c# - 给定一个可格式化字符串,是否有一种干净的方法来获取给定参数的格式化字符串?