SQL限制错误

时间:2013-03-16 18:17:35

标签: c# sql sql-server-ce-3.5

我在我的项目中使用此代码(SQL COMPACT):

"select Name 
from Drug 
where Name 
like '" + Dname + "%'  
limit 10"

Dname是一个字符串值。结果是这个错误:

  

解析查询时出错。

     

[令牌行号= 1,令牌行偏移= 44,令牌错误=极限]

为什么会发生这种情况,我该如何解决?

3 个答案:

答案 0 :(得分:4)

我认为你想要的是

"select TOP (10)  
from Drug 
where Name 
like '" + Dname + "%'  "

您还应该尝试使用参数化查询:

 string qry = "select TOP(10) from Drugs where name like @dname";
 SqlCommand oCmd = new SqlCommand(qry, ConnectionString);
 oCmd.Parameters.AddWithValue("@dname", dname +  '%');

答案 1 :(得分:3)

永远不要使用字符串连接来构建SQL查询。始终使用参数化查询:

string connectionString = ....
using (var conn = new SqlConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "SELECT TOP 10 FROM drug WHERE name LIKE @name";
    cmd.Parameters.AddWithValue("@name", Dname + '%');
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            ...
        }
    }
}

答案 2 :(得分:2)

根据this previous question,正确的语法为TOP(n),请尝试以下操作:

"select TOP(10) Name 
from Drug 
where Name 
like '" + Dname + "%' "