2013-11-03 178 views
-1

我试图使用两个where子句从访问数据库中获取值。这是我得到的错误! "Syntax error (missing operator) in query expression 'unit1<=34 and unit2>=34 where"'如何从数据库中获取值

,这是我的代码:

OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\Work\\Office\\Electricity_Board_bill_calculator\\gk.accdb;"); 
con.Open(); 
OleDbCommand com5 = new OleDbCommand("select id from tblBillConfig where unit1<=" 
      + contot + " and unit2>=" + contot + " where group=3 ", con); 

回答

2
在两个地方的SQL字符串

你“其中”。这是错误的至少一个原因。

2

有几个潜在的问题:

  • 你不能有2项where条款。第二个过滤器需要引入并且'
  • Group是一个保留关键字,所以需要转义。 (这是SQL Server [group]。我不知道如何在MS Access做到这一点)

你也应该看看使用parameters to bind variables。这解决了一堆问题,如sql注入,并且还提高了性能,因为参数化可能允许RDBMS缓存查询计划。

所以您的查询应该是这个样子:

var com5 = new OleDbCommand("select id from tblBillConfig " + 
          " where unit1<=? and unit2>= ? and [group]=3 ", con); 
command.Parameters.Add("@p1", OleDbType.Integer).Value = 34; 
command.Parameters.Add("@p2", OleDbType.Integer).Value = 34;