【问题标题】:OleDbException was unhandled when OleDbDataAdapter function is used使用 OleDbDataAdapter 函数时未处理 OleDbException
【发布时间】:2014-10-24 19:42:31
【问题描述】:

我正在使用Read Access File into a DataSet 的第一个答案从 Access 文件中准备数据集。

这里是解决方案的代码sn-p:

Using cn = New OleDbConnection(connectionstring)
cn.Open()
Dim ds As DataSet = new DataSet()

Dim Schema As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
For i As Integer = 0 To Schema.Rows.Count - 1
    Dim dt As DataTable = New DataTable(Schema.Rows(i)!TABLE_NAME.ToString())

    Using adapter = New OleDbDataAdapter("SELECT * FROM " + Schema.Rows(i)!TABLE_NAME.ToString(), cn)
        adapter.Fill(dt)
    End Using

    ds.Tables.Add(dt)
Next i
End Using

当“i”计数器为 62 时,未处理 OleDbException 的“FROM 子句中的语法错误”。

当我在 QuickWatch 中查看“ds.Tables.List”时,ds.Tables(61) 的表名为“xxxTable”。

同时,在 Microsoft Access 中,表 62 名称为“xxxTable(abc)”

换句话说,“SELECT * FROM” + Schema.Rows(i)!TABLE_NAME.ToString() 的字符串表达式 什么时候 我 = 61; "SELECT * FROM xxxTable"

当 i = 62; "SELECT * FROM xxxTable(子系统 0)"

如何处理带有 ( ) 的表名?

谢谢

【问题讨论】:

    标签: vb.net ms-access


    【解决方案1】:

    将您的表名括在方括号中,即特定行将变为:

    Using adapter = New OleDbDataAdapter("SELECT * FROM [" + Schema.Rows(i)!TABLE_NAME.ToString() + "]"c, cn)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      相关资源
      最近更新 更多