2013-02-11 202 views
0

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

staff_Id | hashValue 
    1  | 4ENOA2838F09dbfTKXeAdEIKRM91MdsDg0W4pRNChdkGa7iwoVifWH9avZdjrPp1QqLJ0ecNe/X716HlwqfSYA== 

这是我的SQL命令。

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

我曾尝试使用谷歌搜索转义字符,但我无法得到这个工作。希望你能帮助我。谢谢。

P.S.我正在开发与MS-访问

UPDATE

这是在执行搜索查询我的C#程序我的SQL查询交互的C#程序。

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

什么是错误信息? (如果有) – 2013-02-11 13:27:10

+0

没有显示错误消息,但在执行此查询后它将返回一个空表。 – Dale 2013-02-11 13:30:22

+0

其中是变量'hashedValue'声明?它正在被宣布为 – 2013-02-11 14:03:20

回答

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效果最好的@字符串声明时。

+0

您好Jens,是否有可能在C#中的参数化查询中添加'@'?如果可能的话,是否可以,如果你要显示我的代码?谢谢 – Dale 2013-02-11 13:43:24

+0

好的 - 请显示你的代码(C#)引发查询:),然后我会更新答案。 – 2013-02-11 13:47:09

+0

我已经更新了我的答案:)谢谢 – Dale 2013-02-11 13:56:31

0

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

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

我仍然无法得到它的工作:(但感谢您的输入 – Dale 2013-02-11 13:29:08

相关问题