使用OleDbDataAdapter函数时,未处理OleDbException

时间:2014-10-24 11:35:02

标签: vb.net ms-access

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

以下是解决方案的代码段:

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

我有" FROM子句中的语法错误"当" i"时,OleDbException未得到处理柜台是62.

当我检查" ds.Tables.List"在QuickWatch中,ds.Tables(61)的表名为" xxxTable"。

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

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

当p = 62时

; " SELECT * FROM xxxTable(子系统0)"

如何使用()?

处理表名

谢谢

1 个答案:

答案 0 :(得分:1)

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

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