-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);
4

2 回答 2

2

您在 SQL 字符串的 2 个位置有 'where'。这至少是错误的一个原因。

于 2013-11-03T06:54:43.343 回答
2

有几个潜在的问题:

  • 你不能有 2 个where子句。第二个过滤器需要用 and` 引入
  • Group是保留关键字,因此需要转义。(这将[group]在 Sql Server 中。我不确定如何在 MS Access 中执行此操作)

您还应该看看使用参数绑定变量。这解决了一系列问题,例如 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;
于 2013-11-03T06:55:06.777 回答