接続の種類 | クラス名 |
---|---|
System.Data.SqlClient | SqlConnectionクラス |
System.Data.OracleClient | OracleConnectionクラス |
System.Data.OleDb | OleDbConnectionクラス |
System.Data.Odbc | OdbcConnectionクラス |
SqlConnectionクラスは、データベースに接続するためのクラスです。データベースに一番近い位置に存在します。接続文字列を使用してデータベースに接続したり、閉じたりします。また、トランザクションの接続管理もします。
プロパティ名 | 概要 |
---|---|
ConnectionString | SQL Serverに接続するために使用する接続文字列を取得・設定する |
Database | 現在のデータベース、または接続してから使用するデータベース名を取得する |
DataSource | 接続するSQL Serverのインスタンス名を取得する |
ServerVersion | クライアントが接続しているSQL Serverインスタンスのバージョン情報を取得する |
メソッド名 | 概要 |
---|---|
BeginTransaction | データベーストランザクションを開始する |
Close | データベースへの接続を閉じる |
Open | ConnectionStringプロパティで指定した接続文字列を使用して、データベースに接続する |
データベースに接続するにはこのクラスのオブジェクトを使用します。インスタンス生成時に接続文字列を指定するか、インスタンス生成後にConnectionStringプロパティに接続文字列を設定します。その後、Openメソッドでデータベースに接続し、Closeメソッドでデータベースへの接続を閉じます。
○ プロジェクト
プロジェクトを作成して確認してみましょう。
プロジェクトの種類 | コンソール アプリケーション |
---|---|
プロジェクト名 | ConnectionTest |
○ 接続文字列
データベースに接続するには接続文字列が必要です。データベースサンプルの準備でVisual StudioからSQL Serverに接続をしているので、その設定から接続文字列を取得しましょう。
Visual Studioの画面で「サーバー エクスプローラー」を表示して、次の図のように「Books.mdf」を選択してください。
その後、「プロパティ」内の「接続文字列」プロパティの設定内容をコピーします。
コピーした接続文字列は次のような形式になっています(全く同じとは限りません)。このコピーした接続文字列をプログラムの中で使用します。
Data Source=(LocalDB)¥v11.0;AttachDbFilename=C:¥Work¥Books.mdf;Integrated Security=True;Connect Timeout=30
○ プログラム
Mainメソッドに次のように記述してください。
Program.cs
○ 実行結果
オープン前のデータベースの状態:Closed
オープン後のデータベースの状態:Open
接続文字列:Data Source=(LocalDB)¥v11.0;AttachDbFilename=C:¥Work¥Books.mdf;Integrated Security=True;Connect Timeout=30
データベース:C:¥WORK¥BOOKS.MDF
インスタンス名:(LocalDB)¥v11.0
バージョン:11.00.3000
クローズ後のデータベースの状態:Closed
○ 解説
6行目で記述した内容はusingの指定です。SqlConnectionクラスなどを指定するときには名前空間名も指定します。本来ならば18行目の記述は「System.Data.SqlClient.SqlConection」というように完全修飾名で指定することになります。usingキーワードで名前空間を指定することでクラス名のみで指定できるようになります。
15行目では接続文字列を変数constrに格納しています。この接続文字列は、プロパティよりコピーした内容です。文字列の先頭に「@」がついていますが、これにより文字列内にエスケープ文字があった場合は無視されます。@を指定しない場合は「¥~」という文字がエスケープ文字として認識されますが、@がついているため普通の文字列として扱われます。
18行目でSqlConnectionオブジェクトを生成しています。コンストラクターの引数に接続文字列を渡すことで、ConnectionStringプロパティにセットした状態のオブジェクトを生成します。
21行目ではStateプロパティを参照しています。この行ではデータベースをオープンする前に呼び出されているため、閉じている状態が表示されます。同様に28行目のStateプロパティはオープン後に参照しているので、開いている状態が表示されます。そして、42行目のStateプロパティはクローズ後に参照しているので、閉じている状態が表示されます。
32~35行目では、SqlConnectionオブジェクトの各プロパティを参照してSqlConnectionが持つ情報や、データベースの情報を取得して表示しています。