Microsoft Indexing Serviceカタログにクエリを実行しようとしていますが、(このような)非常に役立つ記事がたくさん見つかりましたが、すべての例で、文字列の連結を使用してクエリを作成しているため、非常に間違っていると感じています。非常に多くの異なるレベルで。
パラメータ化されたクエリを使用したいのは明らかですが、次の例外で説明されているように、MSインデックスプロバイダーはそれらをサポートしていないようです。
ICommandWithParametersインターフェイスは、「MSIDXS」プロバイダーではサポートされていません。コマンドパラメーターは、現在のプロバイダーではサポートされていません。
これが私のコードの簡単な例です。私がやりたいのは、本当に単純なクエリを実行し、不正な入力から保護することだけです。
OleDbCommand cmd = new OleDbCommand("select DocTitle, Path from scope() where @friendlyName = '@value'", ActiveConnection());
cmd.Parameters.Add(new OleDbParameter("@friendlyName", friendlyName));
cmd.Parameters.Add(new OleDbParameter("@value", value));
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet results = new DataSet();
da.Fill(results);
文字列の連結を使用せざるを得ない場合、入力をサニタイズするための最良の方法は何ですか?すべてのケースをカバーしたことをどうやって知ることができますか?