我在搜索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
}
}
答案 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==*";