2013年4月19日 星期五

使用具名參數及SQL語法

FORM http://www.dotblogs.com.tw/box5068/archive/2011/02/14/21366.aspx




使用含有具名參數的 SQL 語法執行效能比執行 SQL 字串更好。不必將參數中有「’」單引號改為兩個「’’」單引號。

防止SQL注射攻擊

參數化查詢的好處是比組字串的查詢更能重複利用查詢計畫,省去剖析、最佳化、編譯、快取計畫等耗用 CPU/Memory 工作,單就真正 Query 語法 (INSERT/SELECT/UPDATE/DELETE 那一段) 來說,結構上一樣,自然沒有效能誰好的問題。



使用具名參數SQL語法的步驟:
Step 1
撰寫有具名參數的 SQL 語法,具名參數前必須加上 @ 符號。
如下面 SQL 語法建立一個具名參數 @Dep
             olecmd = "INSERT INTO Sections(科室) VALUES (@Dep)";
Step 2
建立 cmd 屬於 OleDbCommand 物件並指定所要執行的 SQL 語法 及 cn 連接物件 (Connection)。
             OleDbCommand cmd = new OleDbCommand(olecmd, cn);
Step 3
建立具名參數及參數的資料型別。
建立 @Dep參數為字元型別。寫法:
            cmd.Parameters.Add("@Dep", OleDbType.Char);
Step 4
將資料指定給具名參數。
            cmd.Parameters["@Dep"].Value = "校長室";
Step 5
使用 Command 物件的 ExecuteNonQuery 方法執行 SQL 語法 使資料表更新
           cmd.ExecuteNonQuery() ;

完整程式碼片段:

cn.ConnectionString = ConfigurationManager.
ConnectionStrings["conn"].ConnectionString;
cn.Open();
string olecmd = "INSERT INTO Sections(科室) VALUES (@Dep)";
OleDbCommand cmd = new OleDbCommand(olecmd, cn);
cmd.Parameters.Add("@Dep", OleDbType.Char);
cmd.Parameters["@Dep"].Value = textBox1.Text;
cmd.ExecuteNonQuery();
MessageBox.Show(textBox1.Text+"資料已新增");

0 意見:

張貼留言

 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template