【发布时间】:2017-11-15 10:56:27
【问题描述】:
我有一个想要编辑 SQL 值的 GridView。出于某种原因,我无法像我想要的那样获得价值观。这是我尝试的第一个代码,但无法工作:
String acctNum = customerLookup.Rows[e.RowIndex].Cells[2].Text;
cn2.Open();
SqlCommand cmd = new SqlCommand("Update custInfo set acctNum='"+acctNum+"' WHERE customerName='Strathman,Tim'", cn2);
这并没有像我想要的那样传递值,所以我想我会尝试使用这样的参数值:
SqlCommand cmd = new SqlCommand("update custInfo set acctNum = @acctNum where customerName = @customerName3", cn2);
cmd.Parameters.AddWithValue("@customerName3", customerDropDown.Text.Trim());
cmd.Parameters.AddWithValue("@acctNum", customerLookup.Rows[e.RowIndex].Cells[3].Text);
cmd.ExecuteNonQuery();
这也不起作用...当我为帐号输入“1234”之类的手动输入时它确实起作用,所以我知道这不是客户名称参数的问题...任何线索我所缺少的会很棒
【问题讨论】:
-
如果您在其周围放置一个 try catch 块,您是否会在 @acctNum 上获得从 varchar 或 nVarchar 到 int 的转换错误?
-
也不要像那样使用内联 SQL,这是不好的做法,如果你想做这样的事情并参数化你应该使用存储过程
-
您是否能够手动测试 SQL - 从命令行或某种形式的 GUI。当查询不起作用时,我的第一反应是获取命令字符串的副本并尝试手动运行它以查看它是否有效 - 有时只是检查字符串突出显示意外或缺少的空格、逗号等。
-
另外,请确保您的连接字符串中有一个默认数据库,或者您已发出 SQL 命令来设置一个,否则您需要指定 custInfo 表所在的位置。