前端 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();
}
}