我在一个项目里定义了一个全局的Connection,我在系统开始运行时连接一下,然后所有对数据库操作都用这一个Connection。
但我在书上看到把Connection定义为局部,每次用时再连接。
这两种方法有什么区别,那一种系统开销更小,更适用于开发

解决方案 »

  1.   

    怎么定义connection?请告知,我需要,谢谢!定义全局比较好,连接远程速度慢,每次都连速度难以保证
    一次连接,到处使用!
      

  2.   

    我觉得是定义一个全局的connection 好!
      

  3.   

    很明显局部的开销小啊 
    有一种建议能用局部的最好用局部变量
    dim cnn as new ADO.connection
    dim strCnn as string
    strCnn="DSN=数据源名;User Id=sa;Password="
    cnn.ConnectionString=strCnn
    cnn.CursorLocation=adUseClient(使用客户端的游标)
    cnn.Open
      

  4.   

    没有听说过ADOConection有局部之说啊
    SQLserver有连接许可数,最好用1个,程序运行连接。每个DataSet用时在连接,系统资源开销较大。
      

  5.   

    看你局域网中用户的数量,如果用户数量不多(不到100),程序在局域网运行,在模块里用PUBLIC 定义一个全局的连接,是没有问题的!而且代码简单,方便!在vb.net中的连接是用数据时连接,不用时关闭!适合于用户很多和在网上运行的程序总之,两者各有利弊!我是定义一个全局的连接的Public adoCN As New ADODB.Connection       '定义数据库的连接存放数据和代码Public SqlCommand As New ADODB.Command     '定义 SQL 命令Dim adoDateTime As New ADODB.Recordset     '获取 NT-SERVER 时间'***********************************************************************
    '*  功能:与 SQL SERVER 数据库建立连接并取出服务器时间
    '***********************************************************************
    Public Function OpenConnection() As String '打开数据库
        On Error GoTo SQLConErr
        With adoCN
            .CursorLocation = adUseClient
            .Provider = "sqloledb"
            .Properties("Data Source").Value = cNtServerName
            .Properties("Initial Catalog").Value = cDatabaseName
            .Properties("User ID") = cSQLUserName
            .Properties("Password") = cSQLPassword
            .Properties("prompt") = adPromptNever
            .ConnectionTimeout = 15  ‘可以改这个时间
            .Open
            
            If .State = adStateOpen Then
                adoDateTime.Open "select getdate()", adoCN, adOpenStatic, adLockOptimistic
                cServerDate = Format(adoDateTime(0), "yyyy-mm-dd")
                cServertime = Mid(adoDateTime(0), 10)
            Else
                MsgBox "数据库连接失败,请找系统管理员进行检查 !", 16, cProgramName
                End
            End If
        End With
        
        SqlCommand.ActiveConnection = adoCN
        SqlCommand.CommandType = adCmdText
        Exit Function
    SQLConErr:
        Select Case Err.Number
            Case -2147467259
                MsgBox "找不到指定的SQL Server服务器或者数据库不存在,请重新设置!", vbExclamation
                F_SetSystem.Show 1
            Case -2147217843
                MsgBox "指定的SQL Server数据库用户不存在或口令错误,请重新设置!", vbExclamation
                F_SetSystem.Show 1
            Case Else
                MsgBox "数据环境连接失败,请找系统管理员进行检查 !", 16, cProgramName
        End Select
        OpenConnection
    End Function