我知道,非參數化查詢因SQL注入而被忽視。那麼,我的應用程序中有很多查詢容易受到SQL注入的影響。我似乎無法用SqlDataReader
來包裹我的頭。我可以用ExecuteNonQuery
而不是SQLDataReader
。使用SQL數據讀取器進行參數化查詢C#
有人可以給我一些指點和或要做到這一點的最佳方式的例子,執行查詢時,返回正是它應該,我只是想使它儘可能的安全....
代碼:
string myQuery = "Select [shoeSize] AS 'Shoe Size', [shoeBrand] AS 'Shoe Brand' FROM [myTable] "
+ "WHERE [customerName] = '" + customer + "' AND " + "[customerPin] = '" + customerID + "'";
sqlCmd = new SqlCommand(myQuery, conn);
sqlCmd.Connection.Open();
SqlDataReader rdr2 = sqlCmd.ExecuteReader();
if (rdr2.HasRows)
{
rdr2.Read();
shoeSize= rdr2["Shoe Size"].ToString();
shoeBrand= rdr2["Shoe Brand"].ToString();
}
conn.close();
如果您調用ExecuteReader()或ExecuteNonQuery(),則無關緊要。這是一樣的,所以如果你知道如何做到這一點,你可以與其他人做。參考:[在SQL語句中使用參數](http://stackoverflow.com/questions/7505808/using-parameters-in-sql-statements) –
您不應該使用字符串連接或字符串格式來生成sql查詢文本,而是使用sqlCmd.Parameters.Add(...) – Oleg
*皺眉*是今年的委婉說法...... –