データベースの制御には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に受け取る
|
|
|