【问题标题】:Jet Database (ms access) ExecuteNonQuery - Can I make it faster?Jet 数据库(毫秒访问)ExecuteNonQuery - 我可以让它更快吗?
【发布时间】:2010-05-25 19:58:59
【问题描述】:

我有一个我编写的通用例程,它接受一个 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

结束函数

【问题讨论】:

    标签: vb.net ms-access executenonquery


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我看看如何使用数据适配器。
    • 请让我们知道这是否有效,如果有效,我们总是感谢您打勾或投赞成票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多