16

次のような基本的なクエリがあるとします。

 SELECT holiday_name
 FROM holiday
 WHERE holiday_name LIKE %Hallow%

これは私のSQLクエリペインで正常に実行され、「Halloween」が返されます。コードでワイルドカード「%」文字を使用してパラメーターを使用しようとすると、問題が発生します。

SqlConnection Connection = null;
SqlCommand Command = null;

string ConnectionString = ConfigurationManager.ConnectionStrings["SQLdb"].ConnectionString;
string CommandText = "SELECT holiday_name "
                   + "FROM holiday "
                   + "WHERE holiday_name LIKE %@name%";
Connection = new SqlConnection(ConnectionString);

try
{
      Connection.Open();
      Command = new SqlCommand(CommandText, Connection);
      Command.Parameters.Add(new SqlParameter("name", HolidayTextBox.Text));
      var results = Command.ExecuteScalar();
}

catch (Exception ex)
{   
     //error stuff here       
}

finally
{
    Command.Dispose();
    Connection.Close();
}

これにより、不正な構文エラーがスローされます。「%」を自分のパラメーターに移動しようとしました

Command.Parameters.Add(new SqlParameter("%name%", HolidayTextBox.Text));

しかし、スカラー変数 '@name' を宣言していないというエラーが表示されます。では、ワイルドカード文字を適切にフォーマットして、クエリ パラメーターに含めるにはどうすればよいでしょうか? どんな助けでも大歓迎です!

4

3 に答える 3