Мне интересно добавить sql-запросы parametrize в моем приложении ASP.net. Я видел несколько хороших статей об Avoid SQL Injection.Использовать параметризованные sql-запросы, когда SQLCommand используется в отдельном классе
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();
Однако этот способ не является полезным для меня, поскольку я пара подключения к БД в отдельный класс, так как я использовать его.
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 без использования входов Textbox.
Спасибо. Это работает для меня, и это я искал. :) – devan