2012-02-13 72 views
0

我正在做一个OleDb.OleDbDataAdaptor对象来填充一个DataTable对象。在OleDbDataAdaptor的建设,我初始化这样的:MDB表列与Unicode失败?

Dim adapter As New OleDb.OleDbDataAdapter(sql, myConnection) 

其中SQL是我的查询字符串这样的:

Dim sql = "SELECT * FROM DBTable TC WHERE TC.Text=N'Criteria'" 

我现在用的是前面的大写字母N,因为该领域“文本”中表“DBTable”应该是unicode。 而myConnection表示一个连接到我的mdb文件之一,DBTable已定义。

但是,当我执行adaptor.Fill(myDataTable)时,它会失败并引发异常:查询表达式'TC.Text = N'Criteria'中的语法错误(缺少运算符)。有谁知道这里发生了什么?我了解到,为了处理unicode文本,N是必需的。另一个问题是,我如何确保mdb文件中的字段确实是unicode?因为我只能看到字段数据类型是“文本”,而我正在使用Access 2003,所以我只能假设它是unicode。事实上,我正在为字段启用unicode压缩,正如您在文本“标准”中看到的那样,无论如何都没有特殊字符。

感谢您的帮助!

+0

@Remou感谢但C#不是我正在使用的。我正在使用VB.NET,这是Dim来自的地方。这部分代码不是来自MS Access应用程序,除非它试图连接到.mdb数据库。但是我的感觉是否正确,与SQL Server不同,没有必要具有访问mdb unicode文本的大写字母N?因为类似的代码的确适用于SQL Server数据库,但只能通过访问数据库失败 – tete 2012-02-14 06:55:04

+0

请参阅http://stackoverflow.com/questions/6040671/using-n-in-select-query-gives-syntax-error – Fionnuala 2012-02-14 11:34:09

+0

@Remou谢谢!我想这个想法对于Access来说不应该把大写字母N放在字符串前,否则会给出提到的错误。我们的程序对Access数据库和SQL Server数据库使用相同的例程,这就是为什么SQL Server的例程不适用于Access数据库的原因。 – tete 2012-02-14 11:58:51

回答

0

基于@Remou响应,事实证明,对于Access数据库,unicode文本不需要前置大写N. N仅适用于SQL Server DB