none
AccessDatabaseEngine 2016 中OleDbConnection关闭连接, 性能不稳定,如何解决? RRS feed

  • 问题

  • 我们公司的项目目前是.net开发,连接Access 数据库。连接方式如下:

    Public Function OpenConnection() As OleDbConnection
            Dim strDBConnection As String = String.Empty
            Dim conAccess As OleDbConnection

            Select Case DBType
                Case DBConnection.Access
                    '[TL](2013-01-04): [IU0055] Changed hardcoded password to refer to ExcelComLib constant
                    strDBConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + prop_strDBFile + ";Persist Security Info=False;User Id=Admin;Jet OLEDB:Database Password=" + ACCDB_PASSWORD
                Case DBConnection.Oracle
                    prop_strOracleDBName = "(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=epssdev)(PORT=1521)))(CONNECT_DATA=(SID=epssdev1)(SERVER=DEDICATED)))"
                    strDBConnection = "Provider=MSDAORA.1;;Data Source=" & prop_strOracleDBName & "; User Id=" & prop_strDBUserName & ";Password=" & prop_strDBPassword & ";"
            End Select
            Try

                conAccess = New OleDbConnection(strDBConnection)
                conAccess.Open()
                Return conAccess

            Catch exConnection As Exception
                Throw exConnection
            End Try

        End Function

    之前用AccessDatabaseEngine 2010 连接DB,不会出现查询等操作不稳定现象。自从使用AccessDatabaseEngine 2016以后,发现有时登陆界面也很卡,仔细研究发现AccessDatabaseEngine 2016  在close connection 时会出现卡顿现象,有时close connection 需要10几秒甚至20多秒,不稳定。 这个问题请求技术人员提供解决方案, 谢谢。

    测试的结果如下:

    以access 2016打開舊的mdb檔,有否彈出有兼容性問題並建議作轉換警告?如有,作轉換,再試一下

    2.       【VL】:没有出有兼容问题的建

    3.       Close connection卡多久?每个SQL 1000次,是每次卡,還是越來越慢?

    4.       VL有固定的时间,一般几百毫秒就能close,卡的候可以10-几十秒不等(大部分在15~20秒之,

    5.       最近一次测试开关闭4000 400多次,卡的时间没律,猜当时PC的使用情有一定的.

    执行查询的代码如下:

    Public Function Query(ByVal strSQL As String) As DataSet Implements IDBServiceProvider.Query

            Dim conExecute As OleDbConnection
            Dim cmdExecute As OleDbCommand
            Dim dstResult As DataSet = New DataSet
            Dim da As OleDbDataAdapter

            Try
                conExecute = OpenConnection()
                cmdExecute = New OleDbCommand(strSQL, conExecute)
                da = New OleDbDataAdapter(cmdExecute)

                da.Fill(dstResult)
                conExecute.Close()
            
                Return dstResult

            Catch exSQLQuery As Exception
                Throw exSQLQuery
            End Try
        End Function

    经过测试发现 conExecute.Close() ,有时需要20多秒。

    请求技术人员提供如何解决close connection 不稳定的问题,谢谢。


    • 已编辑 Lms008 2019年11月14日 9:39
    2019年11月13日 6:45

全部回复