【发布时间】:2017-10-12 19:34:06
【问题描述】:
我正在使用 SQL Server 2008 和 Visual Studio 2010。使用 ExecuteNonQuery() 命令时会出现此问题。在大多数情况下,它会返回受影响的实际行数,但是当我尝试删除一组记录时,它会返回 0。
当我在 SQL Server Management Studio 中打开表时,我看到 33 条记录被删除。
这是我的代码:
sqlQuery = "delete from priv_ where user_id=" + txt_id.Text;
cmd = new SqlCommand(sqlQuery, con);
MessageBox.Show("rows affected = " + cmd.ExecuteNonQuery());
消息框显示
rows affected = 0
当我在 SQL Server Management Studio 中使用相同的查询时,它会显示
33 rows affected
我已将ONCOUNT 更改为关闭,但没有任何变化。
【问题讨论】:
-
你怎么知道你使用的是同一个语句?你是从调试器中复制了这个变量吗:
sqlQuery -
使用 SQL Profiler 并跟踪调用并确保语句确实被执行。还要在 MessageBox 语句之外获取 ExecuteNonQuery 并为其分配一个 int 变量并将该 int 正确转换为 String(),而不是对 2 种不同类型的隐式“加法运算”。
-
我已经为语句分配了一个变量,但它并没有改变任何东西。
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables
标签: c# sql-server