基本SQL - SELECT

时间:2014-07-26 23:17:33

标签: c# sql

所以我有这段代码:

query2 = "SELECT * from Clicking WHERE ID = '" + ID + "'";

它似乎使脚本出现问题,可能我在这里弄错了。

例如,当我写这篇文章时:

query2 = "SELECT * from Clicking WHERE ID = 3";

..这个工作正常,脚本继续没有问题。但是使用我的原始代码,它向我显示了这个错误:

  

OleDbException未被用户代码

处理      

System.Data.dll中出现'System.Data.OleDb.OleDbException'类型的异常,但未在用户代码中处理

有关如何使这项工作的任何建议吗?

2 个答案:

答案 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;