プログラミング言語からADOを介してデータベースを制御する例を示します。ここでは言語にVisual Basic 6.0を使いますが、ADOとSQLの重要な部分はどの言語でも変わりません。
- ADOの構造と機能 -
ADOは、図3のようなオブジェクトの集合体です。各オブジェクトは表1のような機能を持っています。
表1:ADOのオブジェクトと機能
オブジェクト |
機能 |
Connection |
データベースとの接続を行うオブジェクト |
Command |
データベースに対する処理命令を保持 |
Recordset |
操作対象となる実質的なデータの集合(レコードセット)を保持 |
Error |
接続時のエラー情報を保持 |
Field |
Recordsetオブジェクト内のフィールドを保持 |
Property |
ADOオブジェクトの各種プロパティを保持 |
【開発環境について】
ここでは、Visual Basic 6.0の場合を例に、具体例を掲げておきます。
Microsoft社の最新の開発環境を考慮すれば、Visual Studio .NETとADO.NETの組み合わせの方が一般的なようにも思えますが、実のところサーバーはWindows 2000 Server、実行環境はWindows 2000やNT 4.0といった組織はまだまだ多く、そこでは依然としてVisual Basic 6.0が使われています。
本記事のテーマはデータベースとそれを制御するためのSQLであり、最新の開発テクニックを紹介することではありません。そのため、具体的な開発のためのテクニックについて触れる場合は、できるだけ現状に即した環境を前提にしようと思います。
- DB制御の概要 -
ADOを使ったデータベース制御は、以下のような順序になります。この手順は、どの言語でも同じです。
(1) |
Connectionオブジェクトを生成 |
(2) |
ConnectionオブジェクトのOpenメソッドを実行(データベースの接続) |
(3) |
Recordsetオブジェクトを生成 |
(4) |
RecordsetオブジェクトのOpenメソッドを実行(SQLの実行) |
(1)~(2)の段階でデータベースに接続し、(3)~(4)でSQLを発行します。発行したSQL(今回の例ではSELECT文)の処理結果(抽出したレコード群)は、(3)で生成したRecordsetオブジェクトに格納されます。
- Connectionオブジェクトの生成とOpenメソッド - - (データベースの接続) -
まず、ConnectionとRecordsetの2つのオブジェクトを扱う変数を宣言します。
Dim adoHanbai As ADODB.Connection
↑Connectionオブジェクトを扱う変数
Dim rsItems As ADODB.Recordset
↑Recordsetオブジェクトを扱う変数
次に、Connectionオブジェクトを生成します。ConnectionオブジェクトのConnectionStringプロパティにRDBMSごとに指定されているOLEDBプロバイダ文字列やデータベース名などを設定し、Openメソッドを実行します。
以下は、MSDEなどをインストールしたローカルなサーバーで、SQL Serverのデータベース“db1001ya”をオープンするためのVisual Basicのソースです。
Set adoHanbai = New ADODB.Connection
adoHanbai.ConnectionString = _
"Provider=SQLOLEDB;Integrated Security=SSPI;" _
& "Persist Security Info=False;Initial Catalog=db1001ya;" _
& "Data Source=(local)" ←ローカルサーバーに接続する場合
adoHanbai.Open
- Recordsetオブジェクトの生成とOpenメソッド - - (SQLの実行) -
引数にSQL(文字列)とデータベース名を指定して、RecordsetオブジェクトのOpenメソッドを実行すれば、RecordsetオブジェクトにSQLの処理結果(レコードセット)が保持されます。
Set rsItems = New ADODB.Recordset ←Recordsetオブジェクトを生成
rsItems.Open _ ↓引数にSQL文を与えてOpenメソッドを実行
"SELECT 商品ID,品名,単位,仕入価格,販売価格 FROM t_商品mr", _
adoHanbai, adOpenStatic, adLockOptimistic
- レコードセットの参照 -
Recordsetオブジェクトに格納されたレコードセットを読み取るには、Recordsetオブジェクトの各プロパティを参照します。また、Visual Basicではフォームに貼り付けたコントロールのData SourceプロパティにRecordsetオブジェクト、DataFieldプロパティにRecordsetオブジェクトの保持しているレコードセットのフィールド名を設定する――という方法が使えます。
これらについてはADOやSQLというよりVisual Basicによるアプリケーション開発の話題となるため、今の段階では深く触れないことにします。ADOによるデータベース制御の詳細については、SQLの他の機能を一通り紹介した後でもう一度説明します。
|
|
|