0

MS Access で特殊文字を含む長い文字列を検索する際に問題があります。これが私のサンプルデータです。

staff_Id | hashValue
   1     | 4ENOA2838F09dbfTKXeAdEIKRM91MdsDg0W4pRNChdkGa7iwoVifWH9avZdjrPp1QqLJ0ecNe/X716HlwqfSYA==

これが私のSQLコマンドです。

SELECT *
FROM table
WHERE hashValue='4ENOA2838F09dbfTKXeAdEIKRM91MdsDg0W4pRNChdkGa7iwoVifWH9avZdjrPp1QqLJ0ecNe/X716HlwqfSYA==';

エスケープ文字をグーグルで検索しようとしましたが、これを機能させることができません。あなたが私を助けてくれることを願っています。ありがとうございました。

PS私はMS-accessと対話するC#プログラムを開発しています

アップデート

検索クエリを実行する C# プログラムの SQL クエリを次に示します。

string sqlStatement = "SELECT * FROM table WHERE hashValue = @hashedValue";
using (OleDbConnection connection = new OleDbConnection(connString))
{
    using (OleDbCommand command = new OleDbCommand())
    {
        command.Connection = connection;
        command.CommandText = sqlStatement;
        command.Parameters.AddWithValue("@hashedValue", hashedValue);

        ds = new DataSet(); //have been declared
        dbAdapter = new OleDbDataAdapter(); //have been declared
        dbAdapter.SelectCommand = command;
        dbAdapter.Fill(ds, "table"); //empty dataset here
    }
}
4

2 に答える 2

2

C#では、次のようなコマンドを書いてみてください。

string hashValue = @"4ENOA2838F09dbfTKXeAdEIKRM91MdsDg0W4pRNChdkGa7iwoVifWH9avZdjrPp1QqLJ0ecNe/X716HlwqfSYA==";

string sql = string.Format("SELECT * FROM table WHERE hashValue = '{0}'", hashValue);

文字列の前の@マークに注意してください。これにより、次のような文字列を作成できます。

string test = @" \ ";
Console.WriteLine(test); //output: \

あなたの場合、あなたはこのようにそれをすることができます:

command.Parameters.AddWithValue("@hashedValue", @hashedValue);

ただし、@トリックは、文字列が宣言されたときに設定されている場合に最適に機能します。

于 2013-02-11T13:36:11.040 に答える
0

ワイルドカードを使用してクエリを作成してみませんか?

SELECT *
FROM table
WHERE hashValue Like "*4ENOA2838F09dbfTKXeAdEIKRM91MdsDg0W4pRNChdkGa7iwoVifWH9avZdjrPp1QqLJ0ecNe/X716HlwqfSYA==*";
于 2013-02-11T13:24:01.427 に答える