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'
If I run that query directly in SQL Server Management Studio, it returns 0. ただし、次のようにクエリを変更すると:
exec sp_executesql N'SELECT COUNT (*) FROM Sites WHERE ((STATE LIKE ''MA''))',N'@STATE nvarchar(2)',@STATE=N'MA'
実行すると、正しい 51 のカウントが返されます。
ここで何が欠けていますか?