【问题标题】:Error c# .net Operation must use an updateable query [closed]错误 c# .net 操作必须使用可更新查询 [关闭]
【发布时间】:2016-08-08 09:12:01
【问题描述】:

cmd3.ExecuteNonQuery() 中存在错误;

for(int i=0; i<listView1.Items.Count;i++)
{
    string query2 = "INSERT INTO OrderItems(Order_ID,Item_ID,OI_Quantity,Unit_Price) values ('"+Convert.ToInt32(textBoxId.Text)+"','"+Convert.ToInt32(this.listView1.Items[i].SubItems[5].Text.ToString())+"','"+Convert.ToInt32(this.listView1.Items[i].SubItems[3].Text.ToString())+"','"+Convert.ToInt32(this.listView1.Items[i].SubItems[2].Text.ToString())+"')";
    OleDbCommand cmd2= new OleDbCommand(query2,con);
    cmd2.ExecuteNonQuery();

    string query3 = "UPDATE Item set stock=(select stock from Item where ID='" + Convert.ToInt32(this.listView1.Items[i].SubItems[5].Text.ToString()) + "') - '" + Convert.ToInt32(this.listView1.Items[i].SubItems[3].Text.ToString()) + "' where ID='" + Convert.ToInt32(this.listView1.Items[i].SubItems[5].Text.ToString()) + "' ";
    OleDbCommand cmd3 = new OleDbCommand(query3, con);
    cmd3.ExecuteNonQuery();
}

【问题讨论】:

  • 你的连接字符串是什么?
  • 赋值后query3中有什么内容?
  • 我已经在代码上面使用了连接字符串,连接没有问题
  • 打印查询并在 ssms 中尝试。为什么要在循环中创建两个 cmd?只需在命令上创建并在循环中使用它。 stock=(select stock 可以返回零个或多个。

标签: c# sql .net


【解决方案1】:

您在更新查询中执行减号操作,其中参数以 '' 引号为界,sql 不将其视为整数。

您可以将减法运算的结果存储在一个变量中,然后在更新查询中使用该变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2012-04-25
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多