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

元のエラーの理由は、sEmployeeIdでラップする必要があるためだと思います'

パラメータを使用するには、次のようにします。

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 に答える