2

こんにちは、Datatable があり、36 列、約 112000 レコード、空の mdb ファイルがあります。そのテーブルを空の mdb データベースに追加する最良の方法は何ですか?

SQL コマンドを使用し、CREATE TABLE各列を作成した Datatable に手動で追加してから、SQL コマンドを使用する必要がありますinsertか?

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 に答える