语句中查询表达式中的语法错误(缺少运算符)

时间:2015-08-03 18:46:52

标签: c#

     sqlStatement = "select Price from OrderItem where orderId=" + orderId;
            myAccessCommand = new OleDbCommand(sqlStatement, myAccessConn);
            myDataAdapter = new OleDbDataAdapter(myAccessCommand);
            myDataAdapter.Fill(myDataSet, "OrderItem");`DataTableCollection dta = myDataSet.Tables;
            DataColumnCollection drc = myDataSet.Tables["Orders"].Columns;
            DataRowCollection dra = myDataSet.Tables["Orders"].Rows;

            foreach (DataRow dr in dra)
            {
                orderId= dr[0].ToString();
                Checkintime= dr[1].ToString();
                RoomPrice= dr[2].ToString();
                ReceiptNo= dr[3].ToString();
                Console.WriteLine("orderId: " + orderId + ", Checkintime:  " + Checkintime + ", RoomPrice: " + RoomPrice + ", ReceiptNo: " + ReceiptNo + "");

            }`

我有一个语法错误,在查询表达式中说#34;语法错误(缺少运算符)' orderId ='。"}

我似乎无法找到错误。

1 个答案:

答案 0 :(得分:1)

您的问题的根本原因是您没有使用参数化查询并且正在尝试动态创建sql字符串。因此,您在该字符串的汇编代码中出错。但是如果你使用参数化查询,那么遇到类似问题的可能性会低很多,因为你不必乱用引号,数字到字符串转换等。除此之外,如果使用参数,则不能进行SQL注入攻击,并且使代码更具可读性。

阅读http://www.dotnetperls.com/sqlparameter关于如何使用参数化查询的方式,并且不要只修复查询字符串中的文本错误。这不是它应该完成的方式。

这也是一个很好的解释:http://www.dreamincode.net/forums/topic/268104-parameterizing-your-sql-queries-the-right-way-to-query-a-database/