首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET:DropDownList 含特殊字元(單引號、雙引號、星號)存入 SQL Server 導致語法錯誤

     編輯:程式設計綜合問答

問題現象

前端 DropDownList 選項包含 *'" 等特殊字元,拼接 SQL 字串時導致語法錯誤:

System.Data.SqlClient.SqlException: '*' 附近有語法錯誤。字串 '**',TimeNeedPerGroup='88' where ItemID='9'' 後的引號不完整。

錯誤原因

直接字串拼接 SQL:

string sql = "UPDATE Table SET Format = '" + ddlFormat.SelectedValue + "' WHERE ID = 9"; // ❌

若 SelectedValue 為 *'",產生的 SQL 變成:

UPDATE Table SET Format = ''*'"'' WHERE ID = 9 -- 引號未閉合、語法崩壞

正確解法:參數化查詢

using (SqlConnection conn = new SqlConnection(connStr)) {
    string sql = "UPDATE Table SET Format = @fmt WHERE ID = @id";
    using (SqlCommand cmd = new SqlCommand(sql, conn)) {
        cmd.Parameters.AddWithValue("@fmt", ddlFormat.SelectedValue);
        cmd.Parameters.AddWithValue("@id", 9);
        conn.Open();
        cmd.ExecuteNonQuery();
    }
}

為何參數化查詢有效

  • 參數值由資料庫引擎當作**資料**處理,不參與 SQL 解析,完全避免注入與特殊字元干擾。
  • 效能較好(可重用執行計畫)。
  • 程式碼更清晰、易維護。

補充:Entity Framework / Dapper 等 ORM 同樣採用參數化,無需手動處理跳脫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved