Torna al Thread

Private Sub ImportaFileExcelConOleDB() Dim CnFileExcel As OleDbConnection Try CnFileExcel = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & tbDirectory.Text & ";Extended Properties='Excel 8.0'") Dim sql As String sql = "select Descrizione,CAP,Codice_Provincia from Comuni_ISTAT" CnFileExcel.Open() Dim CMDExcel As OleDbCommand = New OleDbCommand(sql, CnFileExcel) Dim DA As OleDbDataAdapter = New OleDbDataAdapter(CMDExcel) Dim DT As DataTable = New DataTable() DA.Fill(DT) CMDExcel.Dispose() CnFileExcel.Close() Dim TR As SqlClient.SqlTransaction 'Variabile della Transazione SQL Try Cn.Open() 'Apro la connessione al DB TR = Cn.BeginTransaction(IsolationLevel.ReadCommitted) 'Inizio della Transazione Dim CMD As New SqlCommand("", Cn, TR) 'SqlCommand con la transazione 'Codice SQL CMD.CommandText = "DELETE FROM comuni" CMD.ExecuteNonQuery() 'Eseguo il codice SQL TR.Commit() 'Effettuo le modifiche nel DB Cn.Close() 'Chiudo la connessione al DB Catch ex As Exception MessageBox.Show("Errore: " & ex.Message, "Svuotamento tabella comuni nel DB", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Try TR.Rollback() 'Non effettuo le modifiche nel DB mandando un errore Catch exRollback As Exception MessageBox.Show("Errore: " & exRollback.Message, "Svuotamento tabella comuni nel DB con RollBack", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Try If Cn.State = ConnectionState.Open Then 'Se la connessione al DB è aperta Cn.Close() 'Chiudo la connessione al DB End If Exit Sub End Try Dim Comune, Cap, Provincia As String 'Variabile per memorizzare il destinatario e l'indirizzo Dim percentuale As Integer = 0 'Variabile per memorizzare la percentuale dell'avanzamento For i = 0 To DT.Rows.Count - 1 Try Comune = DT.Rows(i).Item(0).ToString Cap = DT.Rows(i).Item(1).ToString Provincia = DT.Rows(i).Item(2).ToString If String.IsNullOrEmpty(Comune) Then Exit Try End If Cn.Open() 'Apro la connessione al DB TR = Cn.BeginTransaction(IsolationLevel.ReadCommitted) 'Inizio della Transazione Dim CMD As New SqlCommand("", Cn, TR) 'SqlCommand con la transazione 'Codice SQL CMD.CommandText = "INSERT INTO comuni(descrizione,cap,provincia) " & _ "VALUES(@descrizione,@cap,@provincia)" CMD.Parameters.Add("@descrizione", SqlDbType.VarChar) 'Parameters CMD.Parameters.Add("@cap", SqlDbType.Int) 'Parameters CMD.Parameters.Add("@provincia", SqlDbType.VarChar) 'Parameters 'Assegnazione Parametri : CMD.Parameters("@descrizione").Value = Comune If String.IsNullOrEmpty(Cap) Then CMD.Parameters("@cap").Value = 0 Else CMD.Parameters("@cap").Value = Cap End If If String.IsNullOrEmpty(Provincia) Then CMD.Parameters("@provincia").Value = "" Else CMD.Parameters("@provincia").Value = Provincia End If CMD.ExecuteNonQuery() 'Eseguo la query percentuale = percentuale + 1 bwImportaExcel.ReportProgress(percentuale * 100 / DT.Rows.Count) TR.Commit() 'Effettuo le modifiche nel DB Cn.Close() 'Chiudo la connessione al DB Catch ex As Exception MessageBox.Show("Errore: " & ex.Message, "Inserimento comune importato nel DB", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Try TR.Rollback() 'Non effettuo le modifiche nel DB mandando un errore Catch exRollback As Exception MessageBox.Show("Errore: " & exRollback.Message, "Inserimento comune importato nel DB con RollBack", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Try If Cn.State = ConnectionState.Open Then 'Se la connessione al DB è aperta Cn.Close() 'Chiudo la connessione al DB End If Exit Sub End Try Next Catch ex As Exception If CnFileExcel.State = ConnectionState.Open Then CnFileExcel.Close() End If MessageBox.Show("Errore: " & ex.Message, "Inserimento file Excel nel DB", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End Try End Sub
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5