【发布时间】:2014-12-11 15:07:42
【问题描述】:
我的更新代码有问题,将 varchar 转换为数字时出错,导致异常。它正在处理两个表。
table1(WEB_ADDRESS) 包含发送到地理编码 API 服务的地址信息。
|PKID | ADDRESS_ID | ADDRESS_1 | CITY | etc...
table2(WEB_ADDRESS_GEO) 包含从 API 服务接收的纬度和经度。
ADDRESS_ID | Lat | Lng
我需要用 lats 和 lngs 更新表 2 中的数据行,以匹配表 1 中的地址数据。
这里是代码
using (SqlConnection myConnection = new SqlConnection(context))
{
myConnection.Open();
string strQueryUpdate = "UPDATE WEB_ADDRESS_GEO SET Lat = '" + strLat + "', Lng = '" + strLng + "'" + "WHERE ADDRESS_ID=" + row.ADDRESS_ID;
SqlCommand myCommandUpdate = new SqlCommand(strQueryUpdate, myConnection);
myCommandUpdate.ExecuteNonQuery();
ADDRESS_ID 列是 VarChar 类型,Lat 和 Lng 是十进制类型。
注意:避免 sql 注入,因为永远不会有用户输入。
【问题讨论】:
-
通过字符串连接而不是使用准备好的语句/参数,您将感受到 SQL 注入之神的愤怒......
-
注意:sql注入并不是使用参数化命令的唯一原因。例如,参数具有显式类型,因此您可以避免像您在这里遇到的类型问题(或者至少它们更容易看到)。
标签: c# sql-server