Connectionオブジェクト

■ データソースごとのクラス

接続の種類 クラス名
System.Data.SqlClient SqlConnectionクラス
System.Data.OracleClient OracleConnectionクラス
System.Data.OleDb OleDbConnectionクラス
System.Data.Odbc OdbcConnectionクラス
Connectionオブジェクトの種類

 SqlConnectionクラスは、データベースに接続するためのクラスです。データベースに一番近い位置に存在します。接続文字列を使用してデータベースに接続したり、閉じたりします。また、トランザクションの接続管理もします。

■ 主なプロパティ

プロパティ名 概要
ConnectionString SQL Serverに接続するために使用する接続文字列を取得・設定する
Database 現在のデータベース、または接続してから使用するデータベース名を取得する
DataSource 接続するSQL Serverのインスタンス名を取得する
ServerVersion クライアントが接続しているSQL Serverインスタンスのバージョン情報を取得する
SqlConnectionの主なプロパティ

■ 主なメソッド

メソッド名 概要
BeginTransaction データベーストランザクションを開始する
Close データベースへの接続を閉じる
Open ConnectionStringプロパティで指定した接続文字列を使用して、データベースに接続する
SqlConnectionの主なメソッド

 データベースに接続するにはこのクラスのオブジェクトを使用します。インスタンス生成時に接続文字列を指定するか、インスタンス生成後に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

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Data.SqlClient;
  7. namespace ConnectionTest
  8. {
  9.  class Program
  10.  {
  11.   static void Main(string[] args)
  12.   {
  13.    //接続文字列
  14.    string constr = @"Data Source=(LocalDB)¥v11.0;AttachDbFilename=C:¥Work¥Books.mdf;Integrated Security=True;Connect Timeout=30";
  15.    //SqlConnectionオブジェクトを生成
  16.    SqlConnection con = new SqlConnection(constr);
  17.    //データベースの状態を表示
  18.    Console.WriteLine("オープン前のデータベースの状態:{0}", con.State);
  19.    Console.WriteLine();
  20.    //データベースを開く
  21.    con.Open();
  22.    //データベースの状態を表示
  23.    Console.WriteLine("オープン後のデータベースの状態:{0}", con.State);
  24.    Console.WriteLine();
  25.    //データベースの情報を表示
  26.    Console.WriteLine("接続文字列:{0}", con.ConnectionString);
  27.    Console.WriteLine("データベース:{0}", con.Database);
  28.    Console.WriteLine("インスタンス名:{0}", con.DataSource);
  29.    Console.WriteLine("バージョン:{0}", con.ServerVersion);
  30.    Console.WriteLine();
  31.    //データベースを閉じる
  32.    con.Close();
  33.    //データベースの状態を表示
  34.    Console.WriteLine("クローズ後のデータベースの状態:{0}", con.State);
  35.    Console.ReadLine();
  36.   }
  37.  }
  38. }

○ 実行結果

オープン前のデータベースの状態: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が持つ情報や、データベースの情報を取得して表示しています。

データベースとConnectionオブジェクトの関係
データベースとConnectionオブジェクトの関係

前へ   次へ