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

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

在上一個範例 [ADO.NET] 如何 使用 SQLCommand 查詢資料庫 當中

1.在插入資料的SQL陳述句,若能使用 Parameter 將會提高安全性,若使用者輸入了特別符號,也比較不會出問題;而寫ASP.NET必須更注意安全性的問題。

2.Parameter 可以 (1)檢查參數的型別 (2)檢查資料長度 (3)確保參數為非可執行的SQL命令 ,如下圖。

快照-200961474314

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 集合型別介紹

快照-200961472950

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();

快照-200961474753

 

範例下載:SQLParameter.rar

範例中的資料庫請於上一個範例 [ADO.NET] 如何 使用 SQLCommand 查詢資料庫 下載

後記:非常感謝 Bil 兄的幫助,若不是他我還不知道我的SQL問句一直下錯。

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo