【问题标题】:MDB Table Column Failed with Unicode?MDB 表列使用 Unicode 失败?
【发布时间】:2012-02-13 20:44:37
【问题描述】:

我正在制作一个 OleDb.OleDbDataAdaptor 对象来填充 DataTable 对象。在OleDbDataAdaptor的构造中,我是这样初始化的:

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

其中 sql 是我的查询字符串,如下所示:

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

我使用前面的大写 N,因为表“DBTable”中的字段“Text”应该是 unicode。 myConnection 表示与我的一个 mdb 文件的连接,其中定义了 DBTable。

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

感谢您的帮助!

【问题讨论】:

  • @Remou 谢谢,但我使用的不是 C#。我正在使用 VB.NET,这就是 Dim 的来源。这部分代码不是来自 MS Access 应用程序,只是它试图连接到 .mdb 数据库。但是我是否觉得与 SQL Server 不同,访问 mdb unicode 文本不需要大写 N?因为类似的代码确实适用于 SQL Server DB,但仅适用于 Access DB
  • @Remou 谢谢!。我猜这个想法是为了访问它不应该把大写 N 放在一个字符串前面,否则它会给出提到的错误。我们的程序对 Access DB 和 SQL Server DB 使用相同的例程,这就是为什么适用于 SQL Server 的例程不适用于 Access DB。

标签: vb.net ms-access unicode


【解决方案1】:

根据@Remou 的响应,事实证明,对于 Access 数据库,unicode 文本不需要前面的大写 N。只有 SQL Server DB 需要 N

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多