天天看點

ado.net參數化查詢

 在 Web 應用程式的開發過程中,Web 安全是非常重要的,現存的很多網站也都存在一

些非常嚴重的安全漏洞,其中SQL 注入是非常常見的漏洞,如果将查詢語句進行參數化查

詢,可以減少SQL 注入漏洞的機率,參數化查詢示例代碼如下所示。

string strsql = "select * from mynews where id= @id"

上述代碼使用了參數化查詢,在存儲過程中,參數化是非常常見的,存儲過程通過

Command 對象進行參數的添加和指派。同樣,參數化查詢也可以通過Command 對象進行

添加和指派,參數化查詢過程如下所示。

 建立一個 Command 對象。

 Command 對象增加一個參數。

 通過索引對 Command 參數進行指派。

第一篇視窗與界面程式設計 267

 執行 ExecuteReader 方法傳回個DataReader 對象。

通過 Command 對象可以為存儲過程,以及參數化查詢語句進行參數的添加,示例代碼

如下所示。

protected void Page_Load(object sender, EventArgs e)

{

string str = "server='(local)';database='mytable';uid='sa';pwd='sa'";

SqlConnection con = new SqlConnection(str);

con.Open();

string strsql = "select * from mynews where id = @bh";

SqlCommand cmd = new SqlCommand(strsql, con); //建立Command 對

cmd.Parameters.Add("@bh", SqlDbType.Int); //增加參數@bh

cmd.Parameters[0].Value = 4; //通過索引為參數賦

SqlDataReader dr = cmd.ExecuteReader(); // 執行後傳回

DataReader 對象

while (dr.Read()) //周遊DataReader

對象

{

Response.Write(dr["title"].ToString()+"<hr>");

}

}

參數化查詢能夠有效的解決一些安全問題,提高Web 應用的安全性。同時,參數化查

詢能夠極大的簡化程式設計。隻需要通過數值的更改而不需要修改SQL 語句,極大的友善

了應用程式的維護。

注意:如果未初始化Parameter 資料類型的屬性,但設定了Value 屬性,那麼Parameter

會自動選擇合适的資料類型