您好,我有一个数据表,包含 36 列、大约 112000 条记录和一个空 mdb 文件,将该表添加到空 mdb 数据库的最佳方法是什么?
我是否必须使用 SQL 命令CREATE TABLE
并将每列手动添加到创建的数据表中,然后使用 SQL insert
命令?
是否有类似SqlBulkCopy
之类的东西可以用于此任务?
请注意,数据表是在运行时创建的,从未存在于数据库中,大部分数据取自 XML 文件
最佳答案
我认为最好的方法是使用OleDBAdapter
类。在继续此过程之前,您需要首先构建数据库。因为 OleDBAdapter
需要它。如果您还记得的话,您可以使用 DataAdapter 的 Fill()
方法读取数据库中表的内容并填充本地缓存的 DataTable 对象。
在 ADO.Net 中保存数据有 3 个步骤:
- 使用
Fill()
方法获取本地缓存的数据副本 - 编写代码(或使用控件)来更改本地缓存的副本
- 使用
Update()
方法将更改保存回底层数据库
这是代码,
Using conn As New OleDBConnection("connectionString Here")
Using comm As New OleDBCommand()
With comm
.Connection = conn
.CommandType = CommandType.CommandText
.CommandText = "SELECT * FROM youTableName"
End With
Using adapter As New OleDBDataAdapter(comm)
Dim _dataTable As New DataTable()
adapter.Fill(_dataTable)
'add you records here '
' preferably by using loop '
Dim _dataRow As DataRow
_dataRow = _dataTable.NewRow()
_dataRow("colNameA") = "valueA"
_dataRow("colNameB") = "valueB"
'........ '
_dataTable.Rows.Add(_dataRow)
Dim dt_changes As DataTable
dt_changes = _dataTable.Changes()
If Not IsNothing(dt_changes) Then
Using commBuild As OleDbCommandBuilder(adapter)
Dim rowCount as Integer = adapter.Update(dt_changes)
MsgBox(rowCount & " updated")
End Using
End If
End Using
End Using
End Using
关于vb.net - 将运行时创建的数据表保存到空 mdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12139240/