параметризованные запросы против внедрения SQL
Я новичок в Asp.net и яЯ только начинаю работать с классами. Недавно я создал класс, который будет обрабатывать большинство моих запросов SQL для меня, так что я неНе нужно многократно создавать новые соединения для всех моих файлов.
Один из методов, которые яСозданный метод принимает запрос SQL в качестве параметра и возвращает результат. Я знаю, что должен использовать параметризованные запросы, чтобы избежать SQL-инъекций. Мой вопрос, как я могу это сделать, когда ям, передавая запрос как строковый параметр?
Например, здесьЭто метод, который ябуду звонить:
public static DataTable SqlDataTable(string sql)
{
using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Connection.Open();
DataTable TempTable = new DataTable();
TempTable.Load(cmd.ExecuteReader());
return TempTable;
}
}
Так что из другого файла яЯ хотел бы использовать этот метод так:
DataTable dt = new DataTable();
dt = SqlComm.SqlDataTable("SELECT * FROM Users WHERE UserName='" + login.Text + "' and Password='" + password.Text + "'");
if (dt.Rows.Count > 0)
{
// do something if the query returns rows
}
Это работает, но все равно будет уязвимым для уколов, верно? Есть ли способ передать переменные в строку в качестве параметров? Я знаю, что могу сделать это, если я создаю новый объект SQLCommand для запроса и использую Parameters.AddWithValue, но я хотел, чтобы все мои команды SQL были в отдельном классе.