动态SQL查询导致"Unclosed quotation mark"错误

Hea*_*ler 1 c# sql sql-delete

我收到这个错误:

字符串''后面的未闭合引号.

使用以下代码:

lSQL = "DELETE FROM tblCourses where courseCode='" + aCourseCode + "'";
Run Code Online (Sandbox Code Playgroud)

lSQL局部变量在哪里,aCourseCode是商店价值.有什么建议?

Dar*_*rov 17

您应该始终使用参数化查询,否则您的代码容易受到错误的影响,因为您正在获取错误,甚至更糟糕的是SQL注入攻击.在构建SQL查询时,切勿在代码中使用字符串连接.这是正确的方法:

using (var conn = new SqlConnection(ConnectionString))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "DELETE FROM tblCourses WHERE courseCode = @courseCode";
    cmd.Parameters.AddWithValue("@courseCode", aCourseCode);
    int deletedRowsCount = cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

这将确保即使aCourseCode变量包含一些转义和危险字符,它们也将得到妥善处理.

  • +1更不用说这也将逃避`aCourseCode`变量中的任何引号. (2认同)