2010-05-25 67 views
2

我有這樣的通用例程,我寫了一個SQL字符串列表並執行它們對數據庫。有什麼方法可以使這項工作更快?通常它會一次看到200次插入或刪除或更新。有時會有更新,插入和刪除的混合。按類型區分查詢是否是一個好主意(即組插入在一起,然後更新然後刪除)?Jet數據庫(ms訪問)ExecuteNonQuery - 我可以更快嗎?

我對MS Access數據庫運行這一點,並用vb.net 2005

Public Function ExecuteNonQuery(ByVal sql As List(Of String), ByVal dbConnection as String) As Integer 
If sql Is Nothing OrElse sql.Count = 0 Then Return 0 

Dim recordCount As Integer = 0 

Using connection As New OleDb.OleDbConnection(dbConnection) 
    connection.Open() 
    Dim transaction As OleDb.OleDbTransaction = connection.BeginTransaction() 

    'Using cmd As New OleDb.OleDbCommand() 
    Using cmd As OleDb.OleDbCommand = connection.CreateCommand 
     cmd.Connection = connection 
     cmd.Transaction = transaction 

     For Each s As String In sql 
      If Not String.IsNullOrEmpty(s) Then 
       cmd.CommandText = s 
       recordCount += cmd.ExecuteNonQuery() 
      End If 
     Next 

     transaction.Commit() 
    End Using 
End Using 

Return recordCount 

端功能

回答

1

您可以使用數據適配器來一次更新整個數據集。在數據庫上直接運行ADO對象的查詢速度會更快。批次循環後,更新整個數據集。這可能會更快,但是需要在應用程序中預先安排一些額外的編碼和開銷。

+0

謝謝,我會看看使用數據適配器。 – Bluebill 2010-05-26 12:10:58

+0

請讓我們知道,如果它的作品,如果它的話,一個複選標記或投票總是讚賞。 – N0Alias 2010-05-27 03:05:52

相關問題