2012年8月1日 星期三

[VB.NET]程式中使用SQL字串IN參數化設定

 

一,寫程式時在使用SQL字串時,WHERE條件的參數,我們需要參數化,以防止SQL Injection發生,

ADO.Net 有提供相關參數化設定,但是當我們遇到使用IN子句時,要如何使用參數化?

 
Dim parameString As String = "123,456,789"
Dim parameArray() As String
Dim temp As String
comm.CommandText = "SELECT * FROM TEST WHERE ID IN (@ID)"


parameArray = parameString.Split(",")


For i = 0 To parameArray.Length - 1
temp &= String.Format("@ID{0},", i)
Next
comm.CommandText = comm.CommandText.Replace("@ID", temp.Substring(0, temp.Length - 1))
For j = 0 To parameArray.Length - 1
comm.Parameters.Add(String.Format("@ID{0}", j), SqlDbType.VarChar).Value = parameArray(j)
Next
comm.ExecuteReader()