所以我有这段代码:
query2 = "SELECT * from Clicking WHERE ID = '" + ID + "'";
它似乎使脚本出现问题,可能我在这里弄错了。
例如,当我写这篇文章时:
query2 = "SELECT * from Clicking WHERE ID = 3";
..这个工作正常,脚本继续没有问题。但是使用我的原始代码,它向我显示了这个错误:
OleDbException未被用户代码
处理System.Data.dll中出现'System.Data.OleDb.OleDbException'类型的异常,但未在用户代码中处理
有关如何使这项工作的任何建议吗?
答案 0 :(得分:5)
当您使用单引号时,3
被视为字符串,可能您的ID
列是int
,这就是你获得例外的原因。
也不要使用字符串连接,使用parameterized queries来防止SQL注入攻击
query2 = "SELECT * from Clicking WHERE ID = @id";
using(var cmd = new SqlCommand(query2, connection))
{
cmd.Parameters.AddWithValue("@id", ID);
...
}
答案 1 :(得分:1)
您编写查询的方式如下:
SELECT * from Clicking WHERE ID = '3'
''在一个数字周围意味着它将查找一个ID作为一个等于3的字符串。所以你想删除数字周围的单引号,所以它将搜索一个等于3的数字,或你使用的任何数字。这就是你想要的:
query2 = "SELECT * from Clicking WHERE ID = " + ID;