vb.net - 将运行时创建的数据表保存到空 mdb

标签 vb.net ms-access datatable

您好,我有一个数据表,包含 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/

相关文章:

Angular 7 - 重新加载数据表中的数据

c# - 使用带格式的excel包写excel

.net - 自定义控件中的组属性

vba - 具有特殊字符 "/"的对象在 GetObject 中产生自动化错误

ms-access - 除非处于 Shift 键旁路模式,否则不会显示进度条

c# - 读取在数据表 c# 中动态创建的复选框值

vb.net - 在获得焦点时显示组合框列表(vb.net)

asp.net - 在 HTML 表中显示 SqlDataSource 数据(DataTables 插件)

c# - .NET 中的 Unicode 版本

database - 值未显示在 Access 窗体组合框中