Prova il codice di sotto.
1) svuoto la tabella Access
2) Leggo il file di testo delimitato
3) Per ogni riga letta, esclusa l'intestazione, la inserisco in tabella
codice:
Private Property StringaConnessione As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", "C:\tmp\prova.mdb")
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim Connessione As OleDbConnection = Nothing
Dim Comando As OleDbCommand = Nothing
Dim Transazione As OleDbTransaction = Nothing
Dim Sql As String = ""
Try
Connessione = New OleDbConnection(Me.StringaConnessione)
Connessione.Open()
Transazione = Connessione.BeginTransaction()
Comando = Connessione.CreateCommand()
Comando.Transaction = Transazione
'cancello la tabella
Delete(Comando)
'leggo il file di testo
ParserFile(Comando)
Transazione.Commit()
'Transazione.Rollback()
l.MsgBox(Me, "Operazioni su database eseguite regolarmente")
Catch ex As Exception
If (Not (Transazione Is Nothing) AndAlso Not (Transazione.Connection Is Nothing)) Then Transazione.Rollback()
l.MsgBox(Me, ex)
Finally
If (Not (Connessione Is Nothing)) Then Connessione.Close()
End Try
End Sub
'cancello tutti i record di tabella1
Private Sub Delete(ByVal Comando As OleDbCommand)
Dim Sql As String = "DELETE FROM [tabella1] "
Comando.CommandText = Sql
Comando.Parameters.Clear()
Comando.ExecuteNonQuery()
End Sub
'leggo il file di testo
Private Sub ParserFile(comando As OleDbCommand)
Using parser As New TextFieldParser("c:\tmp\tabella1.txt", Encoding.Default)
parser.Delimiters = New String() {";"}
parser.TrimWhiteSpace = True
Do While Not parser.EndOfData
Dim n As Long = parser.LineNumber
Dim fields As String() = parser.ReadFields()
'salto la 1° riga con l'intestazione campi
If n = 1 Then Continue Do
'insert in database
Append(comando, fields)
Loop
End Using
End Sub
'insert in database riga letta da file di testo
Private Sub Append(comando As OleDbCommand, fields As String())
Dim sql As String = "INSERT INTO [tabella1] ( [id_comune], [nome_comune], [sigla_provincia], [nome_regione], [data]) VALUES (?,?,?,?,?) "
comando.CommandText = sql
comando.Parameters.Clear()
comando.Parameters.Add("id_comune", OleDbType.Integer).Value = IIf(fields(0) = "", DBNull.Value, fields(0))
comando.Parameters.Add("nome_comune", OleDbType.VarChar, 100).Value = IIf(fields(1) = "", DBNull.Value, fields(1))
comando.Parameters.Add("sigla_provincia", OleDbType.VarChar, 2).Value = IIf(fields(2) = "", DBNull.Value, fields(2))
comando.Parameters.Add("nome_regione", OleDbType.VarChar, 50).Value = IIf(fields(3) = "", DBNull.Value, fields(3))
comando.Parameters.Add("data", OleDbType.Date).Value = DateTime.Now
comando.ExecuteNonQuery()
End Sub