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 的 DataTable 中是不是存在值的最简单/最快的方法?