Jet数据库(ms访问)ExecuteNonQuery - 我可以加快速度吗?

时间:2010-05-25 19:58:59

标签: vb.net ms-access executenonquery

我有这个我编写的通用例程,它接受一个sql字符串列表并对数据库执行它们。有什么方法可以让这项工作更快?通常情况下,它一次可能会看到200次插入或删除或更新。有时会有更新,插入和删除的混合。按类型分离查询(即组合插入,然后更新然后删除)是不是一个好主意?

我在ms访问数据库和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 个答案:

答案 0 :(得分:1)

您可以使用数据适配器一次更新整个数据集。在ADO对象上运行查询比直接运行数据库更快。批处理循环后,更新整个数据集。这可能会更快,但需要在应用程序前面和开销上进行一些额外的编码。