У меня есть один DGV в визуальной основе c. net. Я заполняю его из файла Excel, и он отлично работает (успешно импортированы тысячи записей). Теперь мне нужно экспортировать все эти записи из dgv в базу данных MS Access (таблица) одним нажатием кнопки. У меня уже есть база данных MS Access 2016 (accdb) и таблица с именем tblstudents, в которую я хочу массово вставить эти данные.
Dim AccsessAddress As String = "f:\dbc.accdb"
Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & AccsessAddress & ";Persist Security Info=True;Jet OLEDB:Database Password=abcpass"
Dim accConnection As New OleDb.OleDbConnection(connString)
Выше указаны расположение и строка подключения базы данных, которую я использую, и она отлично работает. .
Imports Spire.Xls
Imports Spire.DataExport
Imports Spire.License
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class Form3
Dim con As New OleDbConnection
Dim ds As New DataSet
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim workbook As Workbook = New Workbook
workbook.LoadFromFile("F:\hi.xlsx")
Dim sheet As Worksheet = workbook.Worksheets(0)
Me.DataGridView1.DataSource = sheet.ExportDataTable
DataGridView1.Rows.RemoveAt(0)
'MsgBox("We will delete empty rows...")
For r As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
Dim empty As Boolean = True
For Each cell As DataGridViewCell In DataGridView1.Rows(r).Cells
If Not IsNothing(cell.Value) Then
empty = False
Exit For
End If
Next
If empty Then DataGridView1.Rows.RemoveAt(r)
Next
End Sub
Try
Dim AccsessAddress As String = "f:\dbc.accdb"
Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & AccsessAddress & ";Persist Security Info=True;Jet OLEDB:Database Password=abcpass"
Dim accConnection As New OleDb.OleDbConnection(connString)
Dim sql As String = "SELECT * FROM tblstudents"
Dim accDataAdapter As New OleDb.OleDbDataAdapter(sql, accConnection)
Dim accCommandBuilder As New OleDb.OleDbCommandBuilder()
accDataAdapter.InsertCommand = accCommandBuilder.GetInsertCommand()
accDataAdapter.UpdateCommand = accCommandBuilder.GetUpdateCommand()
Dim accDataTable As DataTable = dt.Copy()
''Just to make sure, set the RowState to added to make sure an Insert is performed'
For Each row As DataRow In accDataTable.Rows '
If row.RowState = DataRowState.Added Or DataRowState.Unchanged Then '
row.SetAdded() '
End If '
Next '
accDataAdapter.Update(accDataTable)
Catch ex As Exception
MsgBox(ex.Message)
End Try
При использовании приведенного выше кода из Inte rnet я получаю эту ошибку "Необходимо инициализировать свойство DataAdapter.SelectComand"
Как устранить эту ошибку .