gpt4 book ai didi

C# 参数化 Oracle 更新在 ExecuteNonQuery 上失败

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:30 25 4
gpt4 key购买 nike

我正在尝试动态更新一组数据库表。我有两个变量;table_name & field_name。这些由 foreach 循环填充,该循环遍历 DataTable。每次我们在 DataTable 中点击一个新行时,名称都会相应改变。在这个循环中,我创建了一个新的 Oracle Connection 并尝试使用当前的 table_name/field_name 编写更新。但是 Oracle 在我的 ExcecuteNonQuery 命令中一直给我一个错误。非常感谢任何帮助!!

编辑:我已重新格式化以包含参数,但仍然不起作用有人对我做错了什么有任何想法吗?

foreach (DataRow fieldtable in setofTables.Tables[0].Rows)
{

//do work
table_name = fieldtable["table_name"].ToString().Trim();
field_name = fieldtable["field_name"].ToString().Trim();

MessageBox.Show(table_name + field_name);

//create parameters

OracleParameter fieldParamater = new OracleParameter("field_name", OracleDbType.Varchar2);
OracleParameter diffParameter = new OracleParameter("mark_diff_oracle", OracleDbType.BinaryFloat);
OracleParameter wellIdParameter = new OracleParameter("id", OracleDbType.Char);
//wellIdParameter.Size = 10;

//create oracle connection and open
OracleConnection OrclCon2 = new OracleConnection("Data Source=" + dbname + "; User Id=" + userid + ";Password=" + password1 + ";");
OrclCon2.Open();

//prepare sql to be passed to oracle
string UpdateOraSQL = "UPDATE " +table_name+ " set :field_name = :field_name - (:mark_diff_oracle) where id = ':id' and :field_name is not null;";
MessageBox.Show(UpdateOraSQL);



//create dommand
OracleCommand UpdateDB = new OracleCommand(UpdateOraSQL, OrclCon2);
UpdateDB.CommandType = CommandType.Text;
//add parameters
UpdateDB.Parameters.Clear();
UpdateDB.Prepare();
UpdateDB.Parameters.Add(fieldParamater).Value = field_name;
UpdateDB.Parameters.Add(diffParameter).Value = mark_diff_oracle;
UpdateDB.Parameters.Add(wellIdParameter).Value = id;

最佳答案

去掉sql语句末尾的分号。更改以下代码

string UpdateOraSQL = "UPDATE " +table_name+ " set :field_name = :field_name - (:mark_diff_oracle) where  id = ':id' and :field_name is not null;";

string UpdateOraSQL = "UPDATE " +table_name+ " set :field_name = :field_name - (:mark_diff_oracle) where  id = ':id' and :field_name is not null";

查看以下链接了解更多信息

why the semicolon couldn't place in the CommandText of a OracleCommand when C#

如果问题仍未解决,如果您也发布整个异常消息可能会有所帮助。

关于C# 参数化 Oracle 更新在 ExecuteNonQuery 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14488751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com