VB.NET 从 DataTable 对象将表附加到数据库

Posted

技术标签:

【中文标题】VB.NET 从 DataTable 对象将表附加到数据库【英文标题】:VB.NET Appending table to a database from DataTable object 【发布时间】:2011-09-06 11:56:13 【问题描述】:

我正在尝试将一些旧的 VB6 代码转换为 VB.NET。旧代码使用 DAO,现在我试图在 ADO.NET/OleDB 中复制它。我已经取得了一些进展(我认为...),但现在我不知道如何将 DataTable 对象添加到数据库中。

这是旧的 VB6 代码,td 是来自 DAO 的 TableDef 对象:

If fso.FileExists(loc) Then
    Set td = m_db.CreateTableDef("Ratings")
    td.Connect = "Excel 8.0;HDR=Yes;IMEX=2;DATABASE=" & loc
    td.SourceTableName = "Sheet1$"
    m_db.TableDefs.Append td
    bFileNotExists = False
Else
    bFileNotExists = True
End If

据我了解,这是从 Excel 文件“loc”中读取 Sheet1,然后将其附加到 DAO 数据库对象 m_db。这是我到目前为止所拥有的,如果您发现任何错误,请纠正我,因为我刚刚开始做这种事情-

If fso.FileExists(loc) Then
        oleCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & loc & ";Extended Properties=""Excel 8.0;HDR=Yes;")
        oleCon.Open()
        oleAdapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", oleCon)
        oleAdapter.Fill(dt)

        bFileNotExists = False
    Else
        bFileNotExists = True
    End If

因此,我不是使用 TableDef,而是从同一张工作表中获取数据并将其放入 DataTable 对象 (dt) 中。我希望到目前为止这是正确的。现在我的问题是如何从上面复制m_db.TableDefs.Append td 行。谢谢!

【问题讨论】:

【参考方案1】:

问题是,您必须使用 Excel 文件中的配置预加载“dt”,以便 TableAdapter 正常工作。这是据我所知。您可以采用多种路径,包括首先创建列然后逐行加载,或者将 Excel 工作表作为 DataTable 本身加载并将其添加到 DataSet。

建议:

开始使用 CamelCase 编程符号。这确实有助于并防止错误。 阅读 ADO.NET,例如遵循一些教程。 Drop OleDb 处理,ADO.NET 就足够了。 意识到VB.Net和VB6的区别,准备学习更多的面向对象编程

【讨论】:

以上是关于VB.NET 从 DataTable 对象将表附加到数据库的主要内容,如果未能解决你的问题,请参考以下文章

vb.net怎么从DataSet中读取一行的数据

vb.net 如何将两个datatable合并

检查 VB.net 的 DataTable 中是不是存在值的最简单/最快的方法?

如何在 VB.NET 中更新 DataTable 中的一行?

从 vb.net 导入数据库的问题

VB.net 中 ,datalist.datasource 转换成datatable,如何转?