2

我有一个运行良好的 C# 窗口应用程序,包括报告生成,但是当我尝试生成报告时突然出现错误。

ERROR [42000] [MySQL][ODBC 5.1 Driver][mysql-5.0.16-nt]您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解要使用的正确语法...

有错误的行是一条Select语句,所以我在MySQL查询浏览器上试了一下,它执行成功,没有遇到错误。

4

1 回答 1

0

你很容易受到SQL Injection. 使用参数化查询。

Select " + FieldName + " from tblYearToDate where EmployeeID = " +EmployeeID + " and YTDYear = '" + Year + "'

如果没有针对Year我的验证可以输入;DROP TABLE tblYearToDate

我相信原始错误的原因是因为EmployeeId需要包裹在's.

要使用参数,只需执行以下操作:

MySqlCommand cmd = new MySqlCommand("SELECT FieldNAme FROM tblYearToDate WHERE EmployeeId = @EmployeeId AND YTDYear = @Year");

cmd.Paramaters.Add("@EmployeeId").Value = EmployeeID
cmd.Paramaters.Add("@Year").Value = Year

cmd.ExecuteNonQuery();
于 2013-07-04T07:47:50.010 回答