搜索MS Access中包含特殊字符的字符串

时间:2013-02-11 13:14:54

标签: c# ms-access ms-access-2007 ms-access-2010

我在搜索MS Access中包含特殊字符的长字符串时遇到问题。这是我的样本数据。

staff_Id | hashValue
   1     | 4ENOA2838F09dbfTKXeAdEIKRM91MdsDg0W4pRNChdkGa7iwoVifWH9avZdjrPp1QqLJ0ecNe/X716HlwqfSYA==

这是我的SQL命令。

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

我曾尝试谷歌搜索转义字符,但我不能让它工作。希望你能帮助我。谢谢。

P.S。我正在开发一个与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
    }
}

2 个答案:

答案 0 :(得分:2)

在C#中尝试编写如下命令:

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

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

notis字符串前的@标记。这允许你有这样的字符串:

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

在你的情况下,你可以这样做:

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

但是@ -trick在声明字符串时设置得最好。

答案 1 :(得分:0)

为什么不使用通配符编写查询?

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