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);

但是如果在声明字符串时设置了@-trick,则效果最好。

于 2013-02-11T13:36:11.040 回答
0

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

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