Oracle参数化更新查询c#

Oracle parameterized update query c#

应该可以,但没有。

我已经介绍过其他人,但找不到原因。

 OracleCommand cmd = con.CreateCommand();           
 var query = $@"UPDATE Customer SET ContactName = :ct WHERE CustomerID = :id";
 cmd.CommandText = query;
 cmd.Parameters.Clear();
 cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Varchar2, "bbb1", System.Data.ParameterDirection.Input));
 cmd.Parameters.Add(new OracleParameter(":ct", OracleDbType.Varchar2, "Joon", System.Data.ParameterDirection.Input));
 var rst = cmd.ExecuteNonQuery();

提前致谢。

我找到了为什么它没有更新 table。

为了让它起作用,我按照查询参数的顺序添加了参数,发现它起作用了。但是我仍然不明白为什么添加参数的顺序对它如此重要 work.But 清楚的是当我这样做时它正在工作:

 OracleCommand cmd = con.CreateCommand();           
 var query = $@"UPDATE Customer SET ContactName = :ct WHERE CustomerID = :id";
 cmd.CommandText = query;
 cmd.Parameters.Clear();

 cmd.Parameters.Add(new OracleParameter(":ct", OracleDbType.Varchar2, "Joon", System.Data.ParameterDirection.Input));
 cmd.Parameters.Add(new OracleParameter(":id", OracleDbType.Varchar2, "bbb1", System.Data.ParameterDirection.Input));
 var rst = cmd.ExecuteNonQuery();

谢谢大家的关注

为了避免顺序声明,可以使用BindByName:

 OracleCommand cmd = con.CreateCommand();           
 cmd.BindByName = true; // Just add this
 ...