メイン画像

VBScript - 切断型のレコードセットの作り方

VBScript - 切断型のレコードセットの作り方


レコードセットは明示的にクローズしない限り、データベースとの接続を維持する。

しかし SELECT 文の結果を格納するようなケースであれば、クライアント側でデータを保持するようにし、接続を切断してしまう方がよい。

そうした方が取得したデータを参照するときにネットワーク接続がなくてもよいし、サーバーの負荷も少なくなる。

 

データベースと接続されていないレコードセットのことを切断型レコードセットと言う。

切断型レコードセットを作るには次のようにする。

  • CursorLocation プロパティに adUseClient を設定する
    • このプロパティは Connection、Recordset が持っている。どちらかに設定すれば OK
  • レコードセットにデータが格納されたら、Recordset.ActiveConnection に Nothing を設定する

Recordset.CursorLocation に adUseClient を設定する例

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

'★adUseClientを設定
rst.CursorLocation = 3

'DEPT 表の DEPTNO, DNAME, LOC カラムを取得する
rst.Open "select DEPTNO, DNAME, LOC from DEPT order by DEPTNO", "Provider=OraOLEDB.Oracle;User ID=scott;Password=tiger;Data Source=ORCL;"

'★接続を切断する
Set rst.ActiveConnection = Nothing

'この時点でデータベースとの接続は切断されている。
'あとはご自由に。

Connection.CursorLocation に adUseClient を設定する例

Dim conn
Set conn = CreateObject("ADODB.Connection")

'★adUseClientを設定
conn.CursorLocation = 3

conn.Open "Provider=OraOLEDB.Oracle;User ID=scott;Password=tiger;Data Source=ORCL;"

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

'DEPT 表の DEPTNO, DNAME, LOC カラムを取得する
rst.Open "select DEPTNO, DNAME, LOC from DEPT order by DEPTNO", conn

'★接続を切断する
Set rst.ActiveConnection = Nothing

'この時点でレコードセットは切断されている

If conn.State <> 0 Then
    conn.Close
End If
Set conn = Nothing

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


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


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


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

おすすめの記事