..
前のレッスンでは、さまざまなサーバー側のコントロールに静的なのコレクションを(また、インメモリとも呼ばれる)にバインドする方法を説明しました。 この種の操作は、特定のコンテキストで有用であるが、しかし、多くの場合、頻繁にデータベースから、他のソースからのアイテムの様々なコレクションにコントロールをバインドする必要が来る。
クラスのデスクトップアプリケーションを開発するためのライブラリ(Windowsフォーム)およびHTTP要求(ASP.NET)の管理などに加えて、。NET Frameworkは、データベースの多種多様な接続をサポートするライブラリが含まれており、です。 ADO.NET(アクティブデータオブジェクト。NET)と呼ばれる。 データベースの照会、データベースへの接続、および結果の管理:この技術は、3つの主要な機能に基づいています。
あなたがそれに接続する必要がデータベースと対話するときに。 接続は、データベースの場所の同定を必要とするだけでなく、セキュリティ管理やその他の複雑な休符を求めることができます。 すべてのこれらの要素は、データベースへの接続プロセスの一部として管理されます。 接続情報は、通常、その内容は様々なパラメータを設定するために使用される文字列として渡されます。
過去に手動で接続したいデータベースの種類を指定することで、ADO.NET経由でデータベースにアクセスするコードを書かなければならなかったし、自動的に設定しながらプロパティは、接続のそのタイプに適しています。
サポートされているデータベースのいくつかの種類があります。
の<configuration> の<configSections> <セクション名="System.Data.Odbc" タイプ=" System.Data.Common.DbProviderConfigurationHandler、..."/> <セクション名="System.Data.OleDbの"タイプ=" System.Data.Common.DbProviderConfigurationHandler、..."/> <セクション名="System.Data.OracleClientの"タイプ=" System.Data.Common.DbProviderConfigurationHandler、..."/> <セクション名="System.Data.SqlClientを"タイプ=" System.Data.Common.DbProviderConfigurationHandler、... "/> <configSections /> <system.data> <DbProviderFactories> ="<追加名="のMicrosoft SQL Server Compactのデータプロバイダ"不変 System.Data.SqlServerCe.3.5" タイプ="System.Data.SqlServerCe.SqlCeProviderFactory ..."/> </ DbProviderFactories> </ System.Dataの> < /設定>>
データベース接続を作成するには、したがって、右のコンポーネントを使用する必要があります。 接続の可用性を使用すると、次にデータベースへのアクセスに使用することができます。 例えば、DB_TESTと呼ばれるSQL Serverのデータベースをホストしている私たちのローカルコンピュータでは、最終的に我々のアプリケーションに次の接続文字列を入力する必要がある場合は、
の<configuration> <connectionStrings> <名前を追加="TEST" されたconnectionString ="サーバ=(ローカル); 統合セキュリティ= SSPI; DB_TESTデータベース="/> </のconnectionStrings> </コンフィギュレーション>この時点で、接続を開くことができますし、私たちが望むの操作の実行のためのデータベースを持っているため。
ほとんどのデータベースでクエリを作成するためのSQL言語(Structured Query Language)を、変更、データの新たな挿入および削除をサポートしています。 これらのコマンドは、通常次のようなフォームを持っている
姓='Smith'というお客様はします。SELECT * FROMお客様は、データベース内のテーブルです。 このコマンドは、最後の名スミスである顧客のリストを取ります。 我々のアプリケーション内でこれらのデータを取得するために、我々は次のようなコードを書く
TestDBAppクラス
{
静的な無効メイン()
{
DbProviderFactory DbProviderFactory DbProviderFactories.GetFactory =("System.Data.SqlClientを");
(はDbConnection CONN = dbProviderFactory.CreateConnection())を使用して
{
文字列s = ConfigurationManager.ConnectionStrings ["テスト"]のConnectionString。
conn.ConnectionString = S;
conn.Open();
されたDbCommand CMD = conn.CreateCommand();
cmd.CommandText ="お客様がSELECT * FROM WHERE姓='Smith'という";
つまりDbDataReaderリーダー= cmd.ExecuteReader();
/ /データにアクセスするリーダーを使用して、
}
}
}
ExecuteReaderメソッドを使用して、コマンド(CMD)は、当社のデータベースクエリの送信を引き起こす。
この場合の結果は、IDataReaderのクラスのインスタンスを介して取得されますが、あなたは、DataSetと呼ばれる別のクラスを介してそれらを管理することができます。
IDataReaderのは、クエリの結果を反復処理を実行する表示されます。 sequenziale.Loの欠点は、スキャンするときは前の行に戻ることができず、また、返される行は読み取り専用ですので、変更することはできませんので、特に、それは一度に行を介して1つを反復処理し、Readメソッドを公開しますコンテンツ。
代替は、切断されたデータセットの管理を可能にするデータセット、にIDataReaderをです。 ADO.NETは、非常に拡張性とスケーラビリティの主要な問題の一つのアプリケーションをサポートするために設計されているデータベースへの接続数に制限があります。 実際のデータベースは、しばしば特定の時点で同時にアクティブな接続の数に制限がありますし、すべての使用中のものが許可されている場合の操作が遅くされています。 システムのユーザー数は、同時に使用可能な接続の数とほぼ等しい場合には問題が関連していない可能性がありますが、ユーザー数が増加した場合、システムのパフォーマンスが劇的に低下する可能性があります。
これらの問題に対処するためにADO.NETは、アプリケーションによって使用されるデータベース(またはその一部)のコピーのようなものを提供するように設計されたDataSetクラスを提供します。 利点が多くて、単にデータセットのインスタンス内の既存のものを、新しいデータを入力更新または削除できると思うし、時間の短い期間のためのデータベースに接続することにより、切断モードで実行されるこれらの操作のすべてを確認する。
DataSetクラスは、DataAdapter経由で移入されるDataTableオブジェクトの配列が含まれています。 DataTableに直接データベースからデータをロードし、次にあなたがそれらに加えられた変更を確認する場合にのみ、データベースとの対話、これらのローカルデータ上で動作することができますときに、これらの要素が呼び出されます。
我々は、コンポーネントつまりDbDataReaderのために何を見たかとは違って、そう完全にランダムなそれのすべての要素にアクセスすることができる、DataSetを使用してそう。
| |
ASP(上級)
動的なWebサイトを作成するためのフルコース。 39€から。 |
| |
ASP.NET(コース)
49€からWebアプリケーションを構築するためのフルコース。 |
| |
SQLとデータベース(コース)
リレーショナルデータベースを作成および管理。 39€から。 |