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
説明
ほかの検索方法と比べて少々手順は多くなるが、その分、柔軟に対応できる。
基本的にはこの方法で検索するようにしておけば良いのではないだろうか。
検索の流れは次のようになる。
Connection
オブジェクトを使って、データベースに接続する。Command
オブジェクトにクエリ、パラメーターを定義する。Recordset.Open
メソッドにCommand
オブジェクトを指定して実行する。Command
オブジェクトを解放する。- 検索結果を使った処理を行う。
Recordset
オブジェクトを解放する。- データベースとの接続を切断する(
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
パラメーター値
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。
この記事にコメントをしてみませんか?