データベース千夜一夜第13回

プログラミングとSQL(1)
~ADO.NETによるデータベース制御の基礎
長谷川裕行
有限会社 手國堂

ADO.NETによるデータベース制御の基本

データベースの制御にはADO.NETを用います。クラス構造も各オブジェクトの仕様もADOと非常に似ていますが、随所に異なる点が存在します。まず基本的なことを押さえておきましょう。


- データベースとConnectionクラス -

ADO.NETでは、ConnectionとCommandの2つのオブジェクトを用いてデータベースの接続と制御を実現します。また、今回のサンプル・アプリケーションでは発行したSQLの結果セットを受け取るために、DataReaderオブジェクトを用います。

これらは制御対象となるデータベースごとに、それぞれ異なるクラスが用意されています。

OleDbConnectionクラス
OLE DB接続に対応したオブジェクト群。
SqlConnectionクラス
SQL Server 7.0以降に対応したオブジェクト群。SQL Serverに最適化されているため、OLE DBによる接続より速い。
OdbcConnectionクラス
データソース名(DSN: Data Source Name)を使ったODBC接続に対応したオブジェクト群。
OracleConnectionクラス
Oracleデータベースに対応したオブジェクト群。


- sqlConnectionクラスのオブジェクト -

サンプル・データベースがSQL Serverなので、ここではSqlConnectionによる接続を試してみます。以下のオブジェクトを使用します。

  SqlConnection、SqlCommand、SqlDataReader

これらのオブジェクトを扱うには、ソースの先頭でライブラリを指定して取り込んでおきます。SqlConnectionを使う場合は、“System.Data.SqlClient”を指定します。

参考までに、OLE DBを扱う場合のオブジェクトを示しておきます。

  OleDbConnection、OleDbCommand、OleDbDataReader

ライブラリは“System.Data.OleDb”となります。両者は基本的なプロパティやメソッドは共通していますが、対象のデータベース・エンジンが異なるため、細部が微妙に異なっています(これについては別の機会に触れます)。

このように、Connectionクラスごとに同じ働きをする各オブジェクト名の接頭語(プリフィックス)を変更してあります。


- 各オブジェクトの働き -

ADO.NETのクラス階層は深く非常に複雑な構造なので、ここですべてを紹介することはできません。基本的な部分だけに絞って、上記オブジェクトの役割を簡単に紹介しておきます。

Connection
ConnectionStringプロパティにデータベースとの接続文字列を設定し、データベースとの接続を行います。
接続文字列はパラメータを列挙したもので、パラメータの名称や形式はデータベース・エンジンごとに異なります。
Command
接続したデータベースの制御を行います。
SQLを発行する場合は、CommandTextプロパティにSQL文字列を設定します。
SELECT命令の場合、ExecuteReaderメソッドを実行して結果を受け取ります。
DataReader
CommandのExecuteReaderメソッドで発行したSQLの処理結果を保持します。


- データベース制御の流れ -

これら3つのオブジェクトを連携させれば、データベースを開いてSQLを発行し、その結果を受け取る――という一連の処理が実現します。動作の概要を簡単に示すと、以下のようになります。

(1)Connectionオブジェクトでデータベースを指定
(2)CommandオブジェクトにConnectionを設定
(3)ConnectionオブジェクトのOpenメソッドでデータベースをオープン
(4)CommandオブジェクトにSQLを設定
(5)CommandオブジェクトのExecuteReaderメソッドでSQLを発行
(6)結果セットをDataReaderに受け取る



トップページ
ADO.NETによるデータベース制御の基本
データベースとConnectionクラス
sqlConnectionクラスのオブジェクト
各オブジェクトの働き
データベース制御の流れ
サンプル(1)~ex01
サンプル(2)~ex02
あとがき
Copyright © GrapeCity inc. All rights reserved.