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

C# ComboBox 數據寫入數據庫:參數化查詢防注入範例

     編輯:程式設計綜合問答

風險代碼

sql = "insert into table set column='" + comboBox1.Text + "'";
sqlcommand.executescalar(sql, con);  -- 拼接 SQL,極易注入

參數化修正

ADO.NET (SqlCommand)

using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand("INSERT INTO RoleUser (RoleName) VALUES (@role)", conn)) {
    cmd.Parameters.Add("@role", SqlDbType.NVarChar, 50).Value = comboBox1.Text;
    conn.Open();
    cmd.ExecuteNonQuery();
}

Entity Framework Core

var entity = new RoleUser { RoleName = comboBox1.Text };
context.RoleUsers.Add(entity);
context.SaveChanges();

Dapper

conn.Execute("INSERT INTO RoleUser (RoleName) VALUES (@role)", new { role = comboBox1.Text });

進階:級聯下拉框綁定

// 綁定數據源
comboBox1.DataSource = GetRoles();
comboBox1.DisplayMember = "RoleName";
comboBox1.ValueMember = "RoleId";

// 取選中值寫入
int roleId = (int)comboBox1.SelectedValue;
cmd.Parameters.Add("@roleId", SqlDbType.Int).Value = roleId;

最佳實踐清單

  • ✅ 絕不拼接 SQL,統一使用參數化。
  • ✅ 連接/命令對象用 using 確保釋放。
  • ✅ 輸入驗證:長度、格式、白名單字符。
  • ✅ 事務包裹多表操作。
  • ✅ 異常日誌記錄不暴露 SQL 細節給前端。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved