[英]Message: System.Data.OleDb.OleDbException : Syntax error (missing operator) in query expression
[英]SQL query in C# (System.Data.OleDb.OleDbException: 'Syntax error (missing operator) in query expression)
OleDbCommand commandtwo = new OleDbCommand("SELECT * from tblShowings WHERE ShowFilmID = " + filmID.Text + " AND Showdate = " + date.Text + " AND Showtime = " + time.Text + "", con);
我的 SQL 查询有什么问题? 我不断收到此错误:
System.Data.OleDb.OleDbException: '查询表达式中的语法错误(缺少运算符)'ShowFilmID = 1111 AND Showdate = 67/87/9999 AND Showtime = 10:00'
您当前的代码容易受到 Sql 注入的影响。 您应该使用参数化查询来避免 sql 注入和正确处理值类型。
您的代码中的错误是因为您缺少'
字符串值类型'
单引号。
"ShowFilmID = '" + date.Text + "'" + ...
这是您应该如何使用参数化查询的示例:
OleDbCommand command = new OleDbCommand(
"SELECT * from tblShowings WHERE ShowFilmID = ? AND Showdate = ? AND Showtime = ?", con);
OleDbParameterCollection paramCollection = command.Parameters;
OleDbParameter myParm = paramCollection.Add(
new OleDbParameter("ShowFilmID", filmID.Text),
new OleDbParameter("Showdate", date.Text),
new OleDbParameter("Showtime", time.Text));
只是从安全角度考虑的一点。 您需要确保您的数据输入/输出经过验证/清理以避免被利用。 理想的过程是存储过程和参数化值。 如果这是不可能的,请确保您已对您的值进行编码以避免 SQL 注入。 只值我的 2 美分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.