メイン画像

VBScript - データベースを検索する | Command

VBScript - データベースを検索する | Command


ADO (Microsoft ActiveX Data Objects) を使ったデータベース検索の方法を紹介する。

Recordset.Open に Command オブジェクトを指定して検索する方法である。

クエリにパラメーター(バインド変数、プレースホルダ)を使いたい場合はこのやり方になる。

サンプルスクリプト

次のスクリプトは EMP 表を EMPNO で検索する。

Option Explicit

'データベースに接続する
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=OraOLEDB.Oracle;User ID=scott;Password=tiger;Data Source=ORCL;"

'コマンドオブジェクトを生成する
Dim cmd
Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "select EMPNO, ENAME from EMP E where E.EMPNO = :EmpNo"
Set cmd.ActiveConnection = conn

'パラメーターを生成する
'*"30001" という文字列をパラメーターとして生成する例
'  引数1:名前
'  引数2:データ型(今回は文字列なので200(adVarChar))
'  引数3:方向(今回は入力なので1(adParamInput))
'  引数4:指定する値のバイト数
'  引数5:指定する値
Dim p1
Set p1 = cmd.CreateParameter("EmpNo", 200, 1, LenB("30001"), "30001")

'コマンドオブジェクトにパラメーターを追加
cmd.Parameters.Append p1

Dim rst
Set rst = CreateObject("ADODB.Recordset")

'コマンドオブジェクトを使ってデータを検索する
rst.Open cmd

'コマンドオブジェクトを解放する
Set cmd.ActiveConnection = Nothing
Set cmd = Nothing

'~~~TODO: 検索結果を使った処理を書く~~~
'~~~TODO: たとえば1件ずつ処理するなら以下のように
Do While Not rst.EOF
  '~~~TODO: レコードに対して行う処理を書く

  '次のレコードに進める
  rst.MoveNext
Loop

'レコードセットを閉じる
If rst.State <> 0 Then
  rst.Close
End If
Set rst = Nothing

'データベースから切断する
If conn.State <> 0 Then
  conn.Close
End If
Set conn = Nothing

説明

ほかの検索方法と比べて少々手順は多くなるが、その分、柔軟に対応できる。

基本的にはこの方法で検索するようにしておけば良いのではないだろうか。

検索の流れは次のようになる。

  1. Connection オブジェクトを使って、データベースに接続する。
  2. Command オブジェクトにクエリ、パラメーターを定義する。
  3. Recordset.Open メソッドに Command オブジェクトを指定して実行する。
  4. Command オブジェクトを解放する。
  5. 検索結果を使った処理を行う。
  6. Recordset オブジェクトを解放する。
  7. データベースとの接続を切断する(Connection オブジェクトを解放する)。

 

Command オブジェクトを生成し、クエリ、接続情報を設定する。

Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "select EMPNO, ENAME from EMP E where E.EMPNO = :EmpNo"
Set cmd.ActiveConnection = conn

 

続けてパラメーターを設定する。

CreateParameter でパラメーターを生成し、Parameters.Append で追加する。

Dim p1
Set p1 = cmd.CreateParameter("EmpNo", 200, 1, LenB("30001"), "30001")

cmd.Parameters.Append p1

CreateParameter の構文は次のとおり。

command.CreateParameter(Name, Type, Direction, Size, Value)
  • Name
    パラメーター名

  • Type
    パラメーターのデータ型
    DataTypeEnum を指定する

  • Direction
    パラメーターの方向(入力/出力/入出力)
    ParameterDirectionEnum を指定する

  • Size
    パラメーター値のバイト数(最大長)

  • Value
    パラメーター値


アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


酒とアクアリウムが最近の楽しみ。

おすすめの記事