次の方法で共有


Visual Studio でのデータへの接続の概要

更新 : 2007 年 11 月

Visual Studio には、データベース、Web サイト、オブジェクトなど、さまざまなソースのデータにアプリケーションを接続するツールが用意されています。Visual Studio でデータ デザイン ツールを使用している場合は、フォームまたはコンポーネントに接続オブジェクトを明示的に作成する必要はあまりありません。通常、接続オブジェクトは、データ ウィザードの 1 つを完了するか、データ オブジェクトをフォームにドラッグすると作成されます。データベース、Web サービス、またはオブジェクトのデータにアプリケーションを接続するには、[データ ソース] ウィンドウの [新しいデータ ソースの追加] を選択してデータ ソース構成ウィザードを実行します。

データをフェッチして Windows アプリケーションのフォームに表示するために TableAdapter クエリを実行し、データに接続するときの標準的な操作の流れを次に図に示します。

クライアント アプリケーションのデータ フロー

データ デザイン ツールを使用しないで接続オブジェクトを作成する方法が便利なときもあります。プログラムで接続を作成する方法については、「データ ソースへの接続 (ADO.NET)」を参照してください。

wxt2cwcc.alert_note(ja-jp,VS.90).gifメモ :

Web アプリケーションをデータに接続する方法については、「ASP.NET でのデータ アクセス」を参照してください。

接続の作成

Visual Studio を使用している場合は、[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般) を使用して接続を構成します。データ ウィザードの 1 つかサーバー エクスプローラまたはデータベース エクスプローラの中で接続の編集または作成を行うとき、または [プロパティ] ウィンドウで接続プロパティを編集するときに、[接続の追加] ダイアログ ボックスが表示されます。

次の操作のいずれかを実行すると、データ接続が自動的に構成されます。

操作

説明

データ ソース構成ウィザードを実行する。

データ ソース構成ウィザードでデータベース パスを選択すると、接続が構成されます。詳細については、「方法 : データベース内のデータに接続する」を参照してください。

TableAdapter 構成ウィザードを実行する。

TableAdapter 構成ウィザード内で接続が作成されます。詳細については、「方法 : TableAdapter を作成する」を参照してください。

TableAdapter クエリの構成ウィザードを実行する。

TableAdapter クエリの構成ウィザード内で接続が作成されます。詳細については、「方法 : TableAdapter クエリを作成する」を参照してください。

[データ ソース] ウィンドウからフォームまたはコンポーネント デザイナに項目をドラッグする。

[データ ソース] ウィンドウから Windows フォーム デザイナまたはコンポーネント デザイナに項目をドラッグすると、接続オブジェクトが作成されます。詳細については、「Windows アプリケーションのフォームでのデータの表示」を参照してください。

新しいデータ接続をサーバー エクスプローラまたはデータベース エクスプローラに追加する。

データ ウィザード内の利用可能な接続の一覧に、サーバー エクスプローラまたはデータベース エクスプローラのデータ接続が表示されます。詳細については、「方法 : サーバー エクスプローラまたはデータベース エクスプローラで新しいデータ接続を追加する」を参照してください。

接続文字列

すべての接続オブジェクトで、ほぼ同じメンバを公開します。ただし、OleDbConnection オブジェクトで使用できる特定のメンバは、接続されているデータ ソースに依存します。すべてのデータ ソースが OleDbConnection クラスのすべてのメンバをサポートしているわけではありません。

接続オブジェクトに関連付けられた基本プロパティは、ConnectionString プロパティです。このプロパティは文字列と属性/値ペアで構成され、これがデータベース サーバーへのログオンと特定のデータベースの指定に必要な情報を表します。標準的な ConnectionString プロパティの例を次に示します。

Provider=SQLOLEDB.1;Data Source=MySQLServer;Initial Catalog=NORTHWIND;Integrated Security=SSPI

ここに示した接続文字列は、接続に Windows 統合セキュリティを使用するように指定しています。統合セキュリティを使用する代わりに、接続文字列にユーザー名とパスワードを含めることもできますが、これは推奨できません。これらの属性はアプリケーションにコンパイルされてしまうため、セキュリティが損なわれる可能性があります。

wxt2cwcc.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

接続文字列の詳細 (パスワードなど) を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。データベースへのアクセスを制御する方法としては、Windows 統合セキュリティを使用する方が安全です。詳細については、「接続情報の保護 (ADO.NET)」を参照してください。

OLE DB で最も一般的に使用される属性/値ペアは、DataSource プロパティおよび Database プロパティなどの単独のプロパティによっても個別に表されます。接続オブジェクトを使用するときは、ConnectionString プロパティを単一の文字列として設定するか、または接続プロパティを個別に設定できます。個別のプロパティで表されていない接続文字列値がデータ ソースで必要な場合は、ConnectionString プロパティを設定する必要があります。

接続文字列の保存と取得

接続文字列は、コンパイルされたアプリケーションまたはアプリケーション構成ファイルに格納できます。詳細については、「方法 : 接続文字列を保存する」を参照してください。

接続の確立と終了

接続において重要な 2 つのメソッドとして、Open メソッドと Close メソッドがあります。Open メソッドは、ConnectionString プロパティの情報を使用してデータ ソースにアクセスし、接続を確立します。Close メソッドは、接続を終了します。ほとんどのデータ ソースでは同時に確立できる接続の数が限られており、また確立された接続は貴重なシステム リソースを使用するため、接続の終了は重要です。

TableAdapterDataAdapter、または DataCommand を使用している場合は、接続を明示的に確立または終了する必要はありません。これらのオブジェクトのメソッド (たとえば、アダプタの Fill メソッドや Update メソッドなど) を呼び出すと、接続が既に確立されているかどうかをメソッドが確認します。確立されていない場合は、アダプタが接続を確立し、ロジックを実行し、接続を終了します。

Fill などのメソッドが接続の確立と終了を自動的に行うのは、接続が確立されていない場合だけです。接続が確立されている場合、メソッドはその接続を使用しますが、接続を終了しません。これにより、ユーザーが自分自身でデータ コマンドを開いたり閉じたりできる柔軟性が得られます。複数のアダプタで 1 つの接続を共有している場合は、このような操作が必要です。この場合、Fill メソッドを呼び出すたびにそれぞれのアダプタが接続を確立して終了するのは非効率的です。代わりに、最初に接続を確立してから、各アダプタの Fill メソッドを呼び出し、最後に接続を終了できます。

接続のプール

アプリケーションで異なるユーザーが同じ種類のデータベース アクセスを行うことがよくあります。たとえば、多くのユーザーが同じデータベースにクエリを実行して同じデータを取得する場合があります。このような場合は、アプリケーションにデータ ソースへの接続を共有 (プール) させると、アプリケーションのパフォーマンスが向上します。接続の確立と終了を各ユーザーが個別に行うと、アプリケーションのパフォーマンスに悪影響を与える可能性があります。

OleDbConnection クラス、OdbcConnection クラス、または OracleConnection クラスを使用する場合は、プロバイダが自動的に接続プールを処理するため、接続プールを自分で管理する必要はありません。

SqlConnection クラスを使用する場合は、接続プールが暗黙的に管理されますが、自分でプールを管理するオプションも提供されています。詳細については、「SQL Server の接続プール (ADO.NET)」を参照してください。

トランザクション

接続オブジェクトは、トランザクション オブジェクト (たとえば、SqlTransaction オブジェクト) を作成する BeginTransaction メソッドによってトランザクションをサポートします。トランザクション オブジェクトは、トランザクションをコミットまたはロールバックするメソッドをサポートしています。

トランザクションはコードで管理されます。詳細については、「トランザクションと同時実行 (ADO.NET)」を参照してください。

.NET Framework Version 2.0 には、System.Transactions 名前空間を経由してアクセスできる新しいトランザクション フレームワークがあります。このフレームワークは、ADO.NET を含む .NET Framework に完全に統合された形態でトランザクションを公開します。詳細については、「SQL Server と System.Transactions の統合 (ADO.NET)」を参照してください。

接続情報とセキュリティ

接続を確立するときにはデータベースという重要なリソースにアクセスするため、多くの場合、接続の設定や操作に関してセキュリティ上の問題があります。

アプリケーション、およびアプリケーションからデータ ソースへのアクセスを保護する方法は、システムのアーキテクチャによって異なります。たとえば、Web ベースのアプリケーションでは、ユーザーはインターネット インフォメーション サービス (IIS: Internet Information Services) に匿名でアクセスできるため、セキュリティ情報を提示しません。この場合、アプリケーションは独自のログオン情報を保持しているので、(特定のユーザー情報ではなく) その情報を使用して接続を確立し、データベースにアクセスします。

wxt2cwcc.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

接続文字列の詳細 (パスワードなど) を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。データベースへのアクセスを制御する方法としては、Windows 統合セキュリティを使用する方が安全です。詳細については、「接続情報の保護 (ADO.NET)」を参照してください。

イントラネットまたは多階層アプリケーションでは、Windows、IIS、および SQL Server に用意されている統合セキュリティ オプションを利用できます。このモデルでは、ローカル ネットワークに対するユーザーの認証情報がデータベース リソースへのアクセス時にも使用され、接続文字列に明示的なユーザー名やパスワードは使用されません。通常、アクセス許可はデータベース サーバー コンピュータ上でグループを使用して設定されるため、データベースにアクセスする可能性のあるすべてのユーザーに対して個別にアクセス許可を設定する必要はありません。このモデルでは、接続に使用するログオン情報を格納する必要はなく、接続文字列情報を保護するための特別な手順も必要ありません。

セキュリティの詳細については、次のトピックを参照してください。

サーバー エクスプローラまたはデータベース エクスプローラでのデザイン時接続

サーバー エクスプローラまたはデータベース エクスプローラには、データ ソースへのデザイン時接続を作成する手段が用意されています。サーバー エクスプローラでは、使用可能なデータ ソースを参照し、データ ソースに含まれるテーブルや列などの要素に関する情報を表示し、データベース要素を編集および作成できます。

アプリケーションは、サーバー エクスプローラまたはデータベース エクスプローラで利用できる接続を直接使用しません。これらの接続は、デザイン時にデータベースを操作するために Visual Studio で使用されます。詳細については、「Visual Database Tools」を参照してください。

たとえば、デザイン時に、サーバー エクスプローラまたはデータベース エクスプローラを使用してデータベースへの接続を作成する場合があります。後でフォームをデザインするときに、データベースを参照し、テーブルから列を選択してデータセット デザイナにドラッグできます。この操作で、データセットに TableAdapter が作成されます。また、新しい接続オブジェクト (新しく作成された TableAdapter の一部) も作成されます。

デザイン時接続に関する情報は、プロジェクトやソリューションから独立して、ローカル コンピュータ上に格納されます。したがって、アプリケーションでの作業中にいったんデザイン時接続を確立すると、Visual Studio で作業するたびに (接続先のサーバーが使用可能である限り) サーバー エクスプローラまたはデータベース エクスプローラに常にその接続が表示されます。サーバー エクスプローラまたはデータベース エクスプローラを使用する方法およびデザイン時接続を作成する方法の詳細については、「方法 : サーバー エクスプローラまたはデータベース エクスプローラで新しいデータ接続を追加する」を参照してください。

参照

処理手順

方法 : データベース内のデータに接続する

チュートリアル : データベース内のデータへの接続

その他の技術情報

Visual Studio でのデータへの接続

ASP.NET でのデータ アクセス

アプリケーションでデータを受け取る準備

アプリケーションへのデータのフェッチ

Windows アプリケーションのフォームでのデータの表示

アプリケーションでのデータ編集

データの検証

データの保存