【发布时间】:2012-06-13 14:23:50
【问题描述】:
我有一个连接到数据库的 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;)。
知道发生了什么 - 感激不尽。 谢谢!
【问题讨论】:
-
也许你可以展示更多的代码。可能是您有未提交的事务
-
@tunmisefasipe,做了一个小修改,但本质上就是代码。
-
connectionObject来自哪里?另外(看过编辑)请去阅读参数,然后改用这些参数。字符串连接几乎总是错误的做法。 -
为了它的价值,建议您更改代码以使用 SQL 参数 - 有助于保护您免受 SQL 注入。像这样编译字符串是被它抓住的经典方法。
-
我的猜测是,在构造查询时,
intId没有您认为的值。
标签: asp.net sql sql-server sql-server-2008