2017年9月15日 星期五

[ADO.NET] 為何 / 如何 使用 SQLParameter 物件

[ADO.NET] 為何 / 如何 使用 SQLParameter 物件


在上一個範例 [ADO.NET] 如何 使用 SQLCommand 查詢資料庫https://dotblogs.com.tw/yc421206/archive/2009/06/10/8776.aspx
當中
1.在插入資料的SQL陳述句,若能使用 Parameter 將會提高安全性,若使用者輸入了特別符號,也比較不會出問題;而寫ASP.NET必須更注意安全性的問題。
2.Parameter 可以 (1)檢查參數的型別 (2)檢查資料長度 (3)確保參數為非可執行的SQL命令 ,如下圖。
3.上一個範例的queryString 變數是
queryString = "insert into mytable (myregion,myname) values(N' " + region + "',N'" + name + "' )";


改為以下
string queryString = "insert into mytable (myregion,myname) values(@myregion,@myname)";


主要是使用"@參數名稱",來代替原本的變數。


4.使用 SQLCommand.Parameters 屬性是引用了 SqlParameterCollection 類別,所以也是集合的一種,如果忘了集合是啥米小請看 [C#.NET][VB.NET] 一般 / 泛型 Generic Collection 集合型別介紹https://dotblogs.com.tw/yc421206/archive/2009/01/25/6941.aspx


5.Parameter 用法很簡單,如下範例:"@myregion", 為變數、textBox1.Text 為對應變數的數值
cmd.Parameters.AddWithValue("@myregion", textBox1.Text);


如何使用SQLParameter 物件


以下範例需引用 System.Data.SqlClient 命名空間,以下為部份範例


1.引用SqlConnection物件連接資料庫
using (SqlConnection cn = new SqlConnection(cs))


2.開啟資料庫
cn.Open();


3.引用SqlCommand物件
using (SqlCommand cmd = new SqlCommand(queryString, cn))


4.加入 SQLParameters(以下執行結果均為相同)


  4.1 使用 SQLCommand.Parameters.Add 方法
      cmd.Parameters.Add("@myregion", SqlDbType.NVarChar);
      cmd.Parameters["@myregion"].Value = textBox1.Text;


  4.2 使用 SQLCommand.Parameters.AddWithValue 方法
     cmd.Parameters.AddWithValue("@myregion", textBox1.Text);


    
  4.3 使用 SQLCommand.Parameters.Add 方法加入 SQLParameters 類別
     cmd.Parameters.Add(new SqlParameter("@myregion", textBox1.Text));


5.執行SQL語法
cmd.ExecuteNonQuery();



沒有留言:

張貼留言