首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jet数据库(ms access) ExecuteNonQuery -我可以让它更快吗?

Jet数据库(ms access) ExecuteNonQuery -我可以让它更快吗?
EN

Stack Overflow用户
提问于 2010-05-26 03:58:59
回答 1查看 971关注 0票数 2

我有一个我编写的通用例程,它获取sql字符串的列表并对数据库执行它们。有没有什么方法可以让这件事更快呢?通常,它一次可能会看到200次插入、删除或更新。有时会有更新、插入和删除的混合操作。将查询按类型分开(例如,将插入组合在一起,然后更新,然后删除)是不是一个好主意?

我在ms access数据库上运行此程序,并使用vb.net 2005。

代码语言:javascript
运行
复制
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

End函数

EN

回答 1

Stack Overflow用户

发布于 2010-05-26 08:19:22

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2908067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档