0

したがって、パラメーター化された LIKE クエリを実行するメソッドがあります。メソッドは検索パラメーター/値を取り込み、クエリの準備ができているコマンドに追加されます。

機能していません。それは機能するはずであり、検索する値をSQL文字列に直接コーディングすると、パラメトリゼーションなしで機能します! 私がパラメータとして持っているときはそうではありません!何か案は。

ここにいくつかの(偽物、名前を変更しました)サンプルコードがあります。

myDataReader = SQLExecute("SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE 'Arrested Development%'")

うまくいくでしょう。でも

Function MethodOfReturningHorror(ByVal TVShow as String) as SqlDataReader
{
dim command as new SQLCommand
command.connection = sqlconnection
command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE '@tvShow%'"
command.Parameters.Add("tvShow",TVShow)

return command.ExecuteReader()
}

怠惰/簡潔さのために、質問に関係のないコードを見逃しました。したがって、戻りビットなどは無視してください。重要なのは、最初の例ではデータ リーダーに何も含まれていないことです。LIKE 句のパラメーター化に関係していると確信しています。

ありがとう!

4

4 に答える 4

6

これを試して:

command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE @tvShow + '%'"
于 2009-01-13T21:55:34.267 に答える
3

'%' を SQL に埋め込むのではなく、パラメーター文字列の末尾に追加してみてください。

于 2009-01-13T21:56:29.540 に答える
1

これを試して、チェックしている値が varchar 値であり、整数型ではないことを確認してください。

command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE convert(varchar(100), @tvShow) + '%'"

T-SQL がネイティブ型変換と文字列連結を行うときに、いくつかの問題が発生しました。

(明らかに、「varchar(100)」をインスタンスで機能するものに変更します:データ型、予想される長さ)

于 2009-01-13T22:07:13.637 に答える
0

@tvShowは変数であり、文字列内で使用しています。これは、C# では次のようになります。

var tvShow = "5th Wheel";
var netwokAndShow = "Fox tvShow";
Console.WriteLine(networkAndShow); // Prints 'Fox tvShow', not 'Fox 5th Wheel'

次のように表示します。

LIKE @tvShow + '%'
于 2009-01-13T22:00:15.943 に答える