プーリング機能は、初期値では無効に設定されています。したがって、プーリング機能を有効にするためにアプリケーションは、コネクションを接続する前にSQLSetEnvAttr関数を発行する必要があります。また、SQLDriverConnect関数を使用して接続を行う場合は、SQL_DRIVER_NOPROMPTパラメタを指定する必要があります。プールされたコネクションは、同一のドライバの間でのみ再利用することができます。
RDOとの連携時にプーリング機能を利用する場合のサンプルプログラムを以下に示します。
Option Explicit
Const dbconnstring = "DSN=DSN01;uid=USER01;pwd=PASS01;" '接続文字列
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 en as rdoEnvironment
Dim cn As rdoConnection
Set en = rdoEngine.rdoEnvironments(0)
Set cn = en.OpenConnection("", rdDriverNoPrompt, _
False, dbconnstring)
'切断要求されたコネクションは、プールに保存されます。
cn.Close
Set cn = Nothing
Set en = Nothing
Next
MsgBox "Connection finished"
End Sub
Private Sub Form_Load()
Dim rc As Long
'プーリング機能を有効にします。
'これは、RDOオブジェクトを呼び出す前に行わなければなりません。
'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