我很有兴趣在我的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