В моем учебнике написано:
"параметризованные запросы обычно выполняются намного быстрее, чем буквальная строка SQL
потому что они анализируются ровно один раз (а не каждый раз, когда строка SQL присваивается свойству CommandText). "
Я запутался, допустим, у нас есть метод вставки
public void InsertAuto(Car car)
{
OpenConnection();
// Format and execute SQL statement.
string sql = "Insert Into Inventory (Make, Color, PetName) Values " +
$"('{car.Make}', '{car.Color}', '{car.PetName}')";
// Execute using our connection.
using (SqlCommand command = new SqlCommand(sql, _sqlConnection))
{
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
CloseConnection();
}
не правда ли, строковый литерал sql создается один раз и просто?
если вы сделаете это таким образом:
public void InsertAuto(Car car)
{
OpenConnection();
// Format and execute SQL statement.
string sql = "Insert Into Inventory" + "(Make, Color, PetName) Values" + "(@Make, @Color, @PetName)"; // Execute using our connection.
using (SqlCommand command = new SqlCommand(sql, _sqlConnection))
{
SqlParameter parameter = new SqlParameter
{
ParameterName = "@Make",
Value = car.Make,
SqlDbType = SqlDbType.Char,
Size = 10
};
command.Parameters.Add(parameter);
parameter = new SqlParameter
{
ParameterName = "@Color",
Value = car.Color,
SqlDbType = SqlDbType.Char,
Size = 10
};
command.Parameters.Add(parameter);
parameter = new SqlParameter
{
ParameterName = "@PetName",
Value = car.PetName,
SqlDbType = SqlDbType.Char,
Size = 10
};
command.Parameters.Add(parameter);
command.ExecuteNonQuery();
}
CloseConnection();
}
где-то еще нужно поменять местами все @ переменные со строковыми значениями?