繁体   English   中英

C# 中的 SQL 查询(System.Data.OleDb.OleDbException:'查询表达式中的语法错误(缺少运算符))

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM