параметризованные запросы против внедрения 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 были в отдельном классе.

Ответы на вопрос(4)

Ваш ответ на вопрос