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

时间:2011-06-01 17:08:51

标签: vb.net ado.net oledb dao

我正在尝试将一些旧的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,然后将其附加到DA_数据库对象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

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

1 个答案:

答案 0 :(得分:0)

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

建议:

  • 开始使用CamelCase编程表示法。这确实有助于防止错误。
  • 阅读ADO.NET,例如通过以下教程。
  • 删除OleDb处理,ADO.NET就足够了。
  • 实现VB.Net和VB6之间的差异,并准备学习更多面向对象的编程