我很有興趣在我的ASP.net應用程序中添加參數化sql查詢。我見過一些關於避免SQL注入的好文章。SQLCommand在單獨的類中使用時使用參數化sql查詢
string sql = string.Format("INSERT INTO [UserData] (Username, Password, Role, Membership, DateOfReg) VALUES (@Username, @Password, @Role, @Membership, @DateOfReg)");
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
cmd.Parameters.AddWithValue("Username", usernameTB.Text);
cmd.Parameters.AddWithValue("Password", passwordTB.Text);
cmd.Parameters.AddWithValue("Role", roleTB.Text);
cmd.Parameters.AddWithValue("Membership", membershipTB.Text);
cmd.Parameters.AddWithValue("DateOfReg", dorTB.Text);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
但是這種方式對我來說並不實用,因爲我對夫婦的DB連接到單獨的類,因爲我有重用。
public class DBconnection{
public int insertQuery(String query) {
int affectedRowCount = 0;
SqlConnection conn = null;
try{
conn = new SqlConnection("Server=localhost;Database=master;UID=sa;PWD=sa;");
SqlCommand cmd = new SqlCommand(query, conn);
cmd.CommandType = CommandType.Text;
conn.Open();
affectedRowCount = cmd.ExecuteNonQuery();
conn.Close();
} catch (Exception e){
String error = e.Message;
}
return affectedRowCount;
}
}
因此,我只使用波紋管代碼部分來調用上面的類並將值插入到數據庫中。
String SQLQuery1 = insert into Article values('" + Txtname.Text + "','" + TxtNo.Text + "','" + Txtdescription.Text + "' ,0)");
DBconnection dbConn = new DBconnection();
SqlDataReader Dr = dbConn.insertQuery(SQLQuery1);
請幫我使用Parameterize sqlString來避免我Sql Injection。 要使用@name,@ No和@description而不使用文本框輸入。
謝謝。這是爲我工作,這是我尋找。 :) – devan 2012-04-23 05:04:38