中野です。
ADOでOracleに接続し、パラメーターマーカー(バインド変数)を利用して
データを抽出する方法です。
条件を動的に設定することができるので、条件が違うだけのSQLを繰り返し実行する際は
この方法のほうが高速に処理されます。
INSERT,UPDATE,DELETEも同様の方法でOKです。
簡単なサンプルを記述します。
-------------------------------------------------------------------------------------
Private poDbConnection As ADODB.Connection
Private poCmd As ADODB.Command
Private poPrm As ADODB.Parameter
'データベース接続
poDbConnection.ConnectionString = "Provider=OraOLEDB.Oracle;" & _
"Data Source=データソース名;" & _
"User ID=ユーザ名;" & _
"Password=パスワード;" & _
"PLSQLRSet=1;"
poDbConnection.Open
'コマンドの確立
Set poCmd = New ADODB.Command
Set poCmd.ActiveConnection = poDbConnection
'SQL文構築
Dim dsSQL As String
dsSQL = "SELECT * FROM テーブル名 WHERE 項目名1=? AND 項目名2=?"
poCmd.CommandText = dsSQL
'パラメーターの準備
Set poPrm = New ADODB.Parameter
'「8」は項目名1の長さ
Set poPrm = poCmd.CreateParameter("項目名1", adChar, adParamInput, 8)
poCmd.Parameters.Append poPrm
Set poPrm = poCmd.CreateParameter("項目名2", adInteger, adParamInput)
poCmd.Parameters.Append poPrm
Dim doRecset As ADODB.Recordset
Do ループ条件
'パラメータのセット
poCmd.Parameters("項目名1").Value = 値
poCmd.Parameters("項目名2").Value = 値
'レコードセットの取得
Set doRecset = poCmd.Execute
・
・
・
Loop
'データベース切断
poDbConnection.Close
| このブログのURL
|この記事のURL