我尝试使用两个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);
答案 0 :(得分:2)
你在SQL字符串的2个位置有'where'。这至少是导致错误的原因之一。
答案 1 :(得分:2)
有几个潜在的问题:
where
条款。需要使用and` 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;