ASP.NET アプリケーションから、このクエリを MySQL に発行したい
SELECT * FROM responses WHERE field_id LIKE '3\_%'
つまり、2 番目の文字がアンダースコア文字であるレコードを探しています。
モデル デザイナーによって生成されたコードは次のようになります。
public virtual RiskAnalysis.responsesDataTable GetResponseGroupForAnalysis(int raid, string fieldid) {
this.Adapter.SelectCommand = this.CommandCollection[2];
this.Adapter.SelectCommand.Parameters[0].Value = ((int)(raid));
if ((fieldid == null)) {
throw new global::System.ArgumentNullException("fieldid");
}
else {
this.Adapter.SelectCommand.Parameters[1].Value = ((string)(fieldid));
}
RiskAnalysis.responsesDataTable dataTable = new RiskAnalysis.responsesDataTable();
this.Adapter.Fill(dataTable);
return dataTable;
}
この関数を次のように呼び出すと:
string filter_string = @"3\_%";
ResponsesAdapter.GetResponseGroupForAnalysis(10, filter_string);
MySQL ログは、クエリを次のように報告します。
SELECT *
FROM responses
WHERE (ra_id = 10) AND (field_id LIKE '3\\_%')
言い換えれば、私はここで盲目的に明らかな何かが欠けていることを知っていますが、C# を使用せずに MySQL のエスケープ バックスラッシュをクエリに配置するにはどうすればよいでしょうか?