SQL Server接收并运行错误结果的查询

时间:2012-06-13 14:23:50

标签: asp.net sql sql-server sql-server-2008

我有一个连接数据库的ASP.NET项目。网页将查询发送到数据库。事实上,它不止一个,它成功地从数据库中读取。 单击提交按钮,我向SQL Server(2008)发送UPDATE查询。

我使用C#,将UPDATE查询发送到服务器,并初始化SqlCommand对象:

修改:添加要查询的变量。

string strQuery = "UPDATE [tbl] SET [f1]='" + stringValue + "', [f2]='" + (boolValue?"1":"0") + "' WHERE [id]=" + intId.ToString() + ";";
SqlCommand cmd = new SqlCommand(strQuery, connectionObject);
int QueryResult = cmd.ExecuteNonQuery();

QueryResult结束0,当然,没有做任何改变。复制粘贴到SSMS - 我得到1 row(s) affected并且数据发生了变化。

连接正常 - 当我使用this检查数据库上的工作时 - 查询已执行。 (看起来像(@1 varchar(8000), @2 varchar(8000), @3 tinyInt) UPDATE [tbl] SET [f1]=@1, [f2]=@2 WHERE [id]=@3;)。

知道发生了什么 - 赞赏。 谢谢!

2 个答案:

答案 0 :(得分:2)

最可能的是WHERE [id]=" + intId.ToString()没有找到要更新的行。

这是因为:

  • ID正确且行尚不存在(如果您只是在手边插入)
  • ID错误
  • stringValue包含破坏SQL的内容,使其执行但不匹配任何内容(不太可能但可能)。
  • 您没有针对正确的数据库执行SQL(我之前在具有多个dbs的Dev环境中完成了此操作!)

如果在strQuery作业之后在行上放置断点,请查看其中包含的内容,并将其内容发回到您的问题中。

答案 1 :(得分:2)

以下是如何使用参数

的示例
using (SqlCommand cmd = new SqlCommand())
        {
            cmd.Connection = connectionObject;
            cmd.Parameters.AddWithValue("@f1", stringValue);
            cmd.Parameters.AddWithValue("@f2", boolValue);
            cmd.Parameters.AddWithValue("@id", intId);
            cmd.CommandText = "update [tbl] set f1 = @f1 , f2 = @f2 where id = @id";
            int QueryResult = cmd.ExecuteNonQuery();

        }