Я признаю, что я новичок (хотя учусь быстро!), Когда дело доходит до использования параметризованных запросов в C #, поэтому я, вероятно, просто что-то упускаю из виду, но не могу понять как заставить параметризованный запрос работать на меня.
Вот очень упрощенный пример. Если нужна дополнительная информация, я, конечно, готов ее предоставить.
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT COUNT (*) FROM Sites WHERE ((STATE LIKE '@STATE'));
command.Parameters.AddWithValue("@State", "MA");
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
count = Convert.ToInt32(reader[0]);
}
reader.Close();
connection.Close();
}
Используя SQL Server Profiler, я вижу, что выдается следующий запрос:
exec sp_executesql N'SELECT COUNT (*) FROM Sites WHERE ((STATE LIKE ''@STATE''))',N'@STATE nvarchar(2)',@STATE=N'MA'
Если я запускаю этот запрос непосредственно в SQL Server Management Studio, он возвращает 0. Если, однако, я изменяю запрос следующим образом:
exec sp_executesql N'SELECT COUNT (*) FROM Sites WHERE ((STATE LIKE ''MA''))',N'@STATE nvarchar(2)',@STATE=N'MA'
И запустить его, я верну счет 51, и это правильно.
Что мне здесь не хватает?