概要
ADO.NETは.NETプラットフォームにおけるデータベース操作関連モジュールの総称です。
これを利用してデータベースに対し、登録・削除・更新・参照といった基本処理を実行できます。またSQL文の実行、SQL関数の呼び出し、ストアドプロシージャの実行なども可能です。
大規模な業務システムの大半はデータベースを必要とします。データを永続的に保存し、高速な検索を実現したい場合にはデータベースを使用します。
ADO.NETのコアにはデータベース操作用メソッドを実装した一連のオブジェクトが用意されています:
- Connection:データベースとの接続を確立
- Command:SQL関連コマンドを実行
- DataSet:メモリ上のデータ集合で、データベースの抽象化レイヤーです。DataSetを操作する感覚はオフラインのデータベースを扱うのと同じで、内部にDataTable(データテーブル)、DataRow(テーブル内の1件分のレコード)を保持します。
- DataReader:順方向専用の読み取り専用データリーダー
- DataAdapter:データアダプター
ADO.NETを理解してこそ機能の充実した業務システムを開発できます。Webサイトなどのアプリケーションもデータベースに依存するケースが多いため、しっかり学習することを推奨します。
EF、iBatis、NHibernate、Linq to EntitiesといったORMフレームワークは、内部的にすべてADO.NETをベースに動作します。ADO.NETを利用して独自のORMフレームワークを作成することもできます。
データベース接続
Connectionはプログラムとデータベースの間の接続を作成し、すべてのデータベース処理の基点となります。
.NETではSqlConnectionクラスによりデータベース接続を実装します。名前空間はSystem.Data.SqlClient、アセンブリはSystem.Data.dllです。
データベースと連携する大半の型はこのdllにまとめられています。
接続を開く前にデータベース接続文字列を用意する必要があり、SqlConnectionオブジェクトを生成する際にこの文字列を渡します。
SqlConnection conn = new SqlConnection(connectionString);Code language: JavaScript (javascript)
接続文字列は単なる文字列でありstring型で保持します。
2種類の認証モードによる接続文字列サンプル
- SAアカウントによるログイン(SQL Server認証)
"Data Source=.;Initial Catalog=データベース名;User ID=sa;pwd=パスワード;"Code language: JSON / JSON with Comments (json)
- Windows認証によるログイン
Data Source=.;Initial Catalog=データベース名;Integrated Security=TrueCode language: PHP (php)
接続文字列は複数の設定項目から構成され、英語のセミコロンで区切り、キー=値の形式で記述します。
パラメータの説明:
Data Source:データベースサーバーのアドレス。ローカル環境では.、localhost、127.0.0.1を指定可能。リモートサーバーの場合はIPアドレスまたはドメイン名を記述します。Initial Catalog:対象データベース名User ID:データベースログインアカウントpwd:データベースログインパスワード
補足:
User IDとpwdは必須項目ではありません。Windows認証を使う場合、Integrated Security=Trueを設定することで統合セキュリティが有効になり、アカウントとパスワードの指定が不要になります。
C#でのデータベース接続方法
private void button1_Click(object sender, EventArgs e)
{
string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=123321;";
// usingブロック内で接続オブジェクトを生成。ブロック終了時に自動でリソース解放され、手動でClose()する必要はない
using (SqlConnection conn = new SqlConnection(connectionString))
{
// データベース接続を開く
conn.Open();
// ここにデータベース処理のコードを記述
}
}Code language: JavaScript (javascript)
解説
conn.Open():データベース接続を開きます。実際にネットワーク接続を確立するにはこのメソッドの呼び出しが必須です。using構文のメリット:usingブロックのスコープを抜けると自動的にリソースが解放され接続が閉じられるため、接続リークを防げます。- usingを使用しない場合、処理完了後に手動で
conn.Close()を呼び出し接続を閉じる必要があります。
その他の利用例
//conn.Open(); // 接続を開く
//conn.Close(); // 手動で接続を閉じる
//conn.ConnectionString = connectionString; // 接続文字列を動的に設定
//conn.ConnectionString = ""; // 接続文字列をクリアCode language: JSON / JSON with Comments (json)
概要と接続