ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 アプリケーション開発ガイド(ODBCドライバ編)

C.3.10 コネクションプーリング

プーリング機能は、初期値では無効に設定されています。したがって、プーリング機能を有効にするためにアプリケーションは、コネクションを接続する前にSQLSetEnvAttr関数を発行する必要があります。また、SQLDriverConnect関数を使用して接続を行う場合は、SQL_DRIVER_NOPROMPTパラメタを指定する必要があります。さらに、ODBCドライバマネージャのプーリング機能を利用するパラメタを接続文字列に記載する必要があります。

プールされたコネクションは、同一のドライバの間でのみ再利用することができます。

ADOとの連携時にプーリング機能を利用する場合のサンプルプログラムを以下に示します。

Option Explicit

Const dbconnstring = "DSN=DSN01;uid=USER01;pwd=PASS01;OLE DB Services=-2"  '接続文字列
Const SQL_ATTR_CONNECTION_POOLING = 201
Const SQL_CP_ONE_PER_DRIVER = 1
Const SQL_IS_INTEGER = -6
Const SQL_CP_OFF = 0

Private Declare Function SQLSetEnvAttr Lib "odbc32.dll"( _
                    ByVal EnvironmentHandle As Long, _
                    ByVal EnvAttribute As Long, _
                    ByVal ValuePtr As Long, _
                    ByVal StringLength As Long) As Integer

Private Sub Command1_Click()
     Dim i As Long

     For i = 1 To 10
         Dim cn As ADODB.Connection
         Set cn = New ADODB.Connection
         cn.Open dbconnstring
         '切断要求されたコネクションは、プールに保存されます。
         cn.Close
         Set cn = Nothing
     Next
     MsgBox "Connection finished"
End Sub

Private Sub Form_Load()
   Dim rc As Long

   'プーリング機能を有効にします。
   'これは、ADOオブジェクトを呼び出す前に行わなければなりません。
   '1プロセスに付き1回発行する必要があります。
   rc = SQLSetEnvAttr(  0%, _
                        SQL_ATTR_CONNECTION_POOLING, _
                        SQL_CP_ONE_PER_DRIVER, _
                        SQL_IS_INTEGER )
   If rc <> 0 Then
        Debug.Print "SQLSetEnvAttr Error " & rc
   End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
   'プーリング機能を無効にします。
   Call SQLSetEnvAttr( 0&, _
                       SQL_ATTR_CONNECTION_POOLING, _
                       SQL_CP_OFF, _
                       SQL_IS_INTEGER )
End Sub