2

您好,我有一个数据表,有 36 列,大约 112000 条记录和一个空 mdb 文件,将该表添加到空 mdb 数据库的最佳方法是什么?

我是否必须使用 SQL 命令CREATE TABLE并将每一列手动添加到创建的数据表中,然后使用 SQLinsert命令?

有没有类似的东西SqlBulkCopy可以用于这项任务?请注意,Datatable 是在运行时创建的,并且从未在数据库中大部分数据取自 XML 文件

4

1 回答 1

2

我认为最好的方法是使用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
于 2012-09-15T03:43:16.740 回答