I\'m trying to speed up my code and the bottleneck seems to be the individual insert statements to a Jet MDB from outside Access via ODBC. I need to insert 100 rows at a tim
Public Sub Insert_tb_TABLE_DATA_TABLE(ByVal arg_Data_Table As DataTable, Optional ByVal arg_Conn_Open As Boolean = False)
Try
If arg_Data_Table.Rows.Count = 0 Then
Return
End If
If Not arg_Conn_Open Then
_Connection_Access = New OleDbConnection(My.Settings.db_GENESIS_ACCESS)
_Connection_Access.Open()
End If
Dim query As String = String.Empty
query = String.Concat("INSERT INTO (, , ,) SELECT * FROM (", _
" SELECT ", arg_Data_Table.Rows(0)("Field1"), " AS Field1, '", _
arg_Data_Table.Rows(0)("Field2"), "' as Field2,", "'", _
arg_Data_Table.Rows(0)("Field3"), "' as Field3, '", _
arg_Data_Table.Rows(0)("Field4"), "' as Field4 FROM tb_REFERENCE")
Dim lc_Count As Integer = 0
For i As Integer = 1 To arg_Data_Table.Rows.Count - 1
If lc_Count = 45 Then
query += ") AS TMP"
_Command_Access = New OleDbCommand(query, _Connection_Access)
_Command_Access.ExecuteNonQuery()
_Command_Access.Dispose()
query = String.Concat("INSERT INTO TABLE (, , ,) SELECT * FROM (", _
" SELECT ", arg_Data_Table.Rows(i)("Field1"), " AS Field1, '", _
arg_Data_Table.Rows(i)("Field2"), "' as Field2,", "'", _
arg_Data_Table.Rows(i)("Field3"), "' as Field3, '", _
arg_Data_Table.Rows(i)("Field4"), "' as Field4 FROM tb_REFERENCE ")
lc_Count = -1
Else : query += String.Concat(" UNION ALL SELECT ", arg_Data_Table.Rows(i)("Field1"), ", '", _
arg_Data_Table.Rows(i)("Field2"), "',", "'", _
arg_Data_Table.Rows(i)("Field3"), "', '", _
arg_Data_Table.Rows(i)("Field"), "' FROM tb_REFERENCE ")
End If
lc_Count += 1
Next
query += ") AS TMP"
_Command_Access = New OleDbCommand(query, _Connection_Access)
_Command_Access.ExecuteNonQuery()
_Command_Access.Dispose()
If Not arg_Conn_Open Then _Connection_Access.Close()
Catch ex As Exception
MessageBox.Show(String.Concat("ERROR: ", ex.Message), "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
Finally
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
End Sub
- 热议问题