我有一个连接数据库的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;
)。
知道发生了什么 - 赞赏。 谢谢!
答案 0 :(得分:2)
最可能的是WHERE [id]=" + intId.ToString()
没有找到要更新的行。
这是因为:
如果在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();
}