visual basic - xdomainjunko036.html.xdomain.jp/pdf/dotnet/vbnet04.pdfvb.net④...

21
VB.NET④ 【VBオブジェクト指向 noa】 -1- Visual Basic.NET データベース編 ADO.NET の概要..................................................... ADO.NET ADO................................................. ADO.NET の仕組み................................................ ADO.NET の特徴.................................................. データアクセスの基本................................................. Windows アプリケーションの開発手順............................... データ接続の作成............................................... データアダプタとコネクションの作成.............................10 データセットの作成.............................................14 データアクセスの利用.................................................21 Windows フォームを使用したデータベース操作.......................21 目 次

Upload: others

Post on 13-Mar-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

VB.NET④ 【VBオブジェクト指向 noa】

-1-

Visual Basic.NET

データベース編

□ ADO.NET の概要..................................................... 2

■ ADO.NET と ADO................................................. 2

■ ADO.NET の仕組み................................................ 4

■ ADO.NET の特徴.................................................. 7

□ データアクセスの基本................................................. 8

■ Windows アプリケーションの開発手順............................... 8

◆ データ接続の作成............................................... 9

◆ データアダプタとコネクションの作成.............................10

◆ データセットの作成.............................................14

□ データアクセスの利用.................................................21

■ Windows フォームを使用したデータベース操作.......................21

目 次

VB.NET④ 【VBオブジェクト指向 noa】

-2-

Visual Basic.NET では、従来の ADOを従来の方法で使用する事も出来るが、通常、データベースにア

クセスする為に ADO.NET を使用する。此処では、Windows 上で動作するアプリケーションの開発に

必要な知識を中心に、ADO.NET の概要を説明する。

■ ADO.NET と ADO ■

Visual Basic 6.0 では、データベースにアクセスする為に ADO(ActiveX Data Object)を使用するが

ADO.NET は、此れを.NET Framework 用に進化させた物で有り、両者は、データアクセスの概念に大

きな差異が有る。

■ データアクセス用のコンポーネント

ADO Visual Basic 6.0 では、データアクセス用のコンポーネントに ADOデータコントロール(ADODC)が

有り、下記の機能を提供して居る。

・データベースに接続する。

・データベースから必要なデータを取得する。

・フォーム上のコントロールとデータベースを連結する。

ADO.NET ADO.NET には、ADO の様な便利なコンポーネントは無い。コネクションを使用してデータベースに

接続し、データアダプタを使用して必要なデータを取得する。

■ データの保持方法

ADO ADO では、取得したデータをレコードセットで管理する。レコードセットは、メモリ上に保持した仮

想テーブルの様な物で有る。

ADO.NET ADO.NET では、データセットに依り、データベースと同じ物をメモリ上に保持する事が出来る。デー

タセットには、複数のテーブルの構造や、主キーやリレーションシップ等の属性を定義する事が出来る。

亦、実行時には、取得したデータを管理する事も出来る。

■ レコードの扱い方

ADO ADO のレコードセットに含まれるレコードは Bookmark プロパティに依り管理されて居り、孰れかの

レコードが必ず選択された状態に成って居る。因みに、レコードセットを取得した初期状態では、先頭

のレコードが選択された状態に成って居る。此のレコードをカレントレコードと呼び、亦、MoveNext

メソッドや MovePrevious メソッド等に依り、カレントレコードを移動する事が出来る。

AADDOO..NNEETT のの概概要要

VB.NET④ 【VBオブジェクト指向 noa】

-3-

ADO.NET ADO.NET には、カレントレコードと謂う概念は無い。其の為、レコードを移動する為のメソッドも無

い。データセットに保持されたデータは、行のコレクションと仕て扱われ、各レコードは、配列の要素

番号を使用して識別する。

■ 接続方法

ADO ADO では、データベースに常時接続した状態で使用するのが基本で有る。其の為、常に最新のデータ

を取得し、更新する事も可能で有るが、実際には、データの転送時以外は、データベースに接続して居

る必要が無い場合が多い。亦、データベースへの接続を維持する事で、システムリソースを消費し、パ

フォーマンスが低下すると謂う負の側面も有る。

ADO.NET ADO.NET では、データセットに依り、データベースと粗同じ物をメモリ上に保持する事が出来るので

データベースに接続する必要が有るのは、データセットにデータを取得する時と、データセットで変更

した内容をデータベースに転送する時丈で有る。其れ以外の時はデータベースの接続を解除し、データ

セットを利用してデータベース操作を行う。

■ ADO と ADO.NET の使い分け

新規にアプリケーションを開発する時は、ADO.NET を利用すると、豊富なツールを利用して、効率良

くアプリケーションを開発する事が出来る。ADO.NET では、データベースと常時接続する必要が無い

為、システムの負荷を軽減する事が出来る。併し、非接続型故に、大量のレコードの即時更新や、常に

最新の情報が必要な場合には、不適格で有り、此の様な場合は、常時接続型の ADO を利用すると良

い。.NET Framework でも、ADO は、サポートされて居る。

データベース

フォーム

フォーム

データセット

データベース

データアダプタ

コネクション

VB.NET④ 【VBオブジェクト指向 noa】

-4-

■ ADO.NET の仕組み ■

ADO.NET で主要なコンポーネントは、データセットとデータプロバイダで有る。データセットは、メ

モリ上に展開したデータベースで有り、元のデータベースとデータセットとの橋渡しは、データプロバ

イダが行う。

■ データベースにアクセスする方法

下図に、データベースにアクセスして取得したデータをフォームに表示する時のイメージを示す。

アプリケーション

ADO.NET

データソース

データアダプタは、データベースへの接続情報と、データベースに対して実行するコマンドを保持した

オブジェクトで有る。データアダプタが保持するコマンドは、データベースからデータを取得するコマ

ンドと、データベースを更新するコマンドに大別される。

データを取得するコマンドを実行すると、自動的にデータベースへの接続を開始して、コマンドを実行

し、取得したデータをデータセットに格納した後、データベースへの接続を解除する。

フォーム

データベース

データセット

XML

データプロバイダ

データアダプタ

コネクション

コマンド

データリーダー

VB.NET④ 【VBオブジェクト指向 noa】

-5-

データセット内のデータは、アプリケーション実行中、メモリに常駐する。レコードの編集や、必要な

データの抽出等の作業は、総てデータセット上で行う。其の為、レコード操作を行うと、データセット

の内容と元のデータベースの内容は、異なる物に成る。此の両者の同期を取る為には、データアダプタ

が保持して居るデータベース更新用のコマンドを使用する。此のコマンドを実行すると、再びデータベ

ースに接続して、データを更新し、処理を終了した後は、接続を解除する。

猶、ADO.NET では、コンポーネント間でデータ転送を行う時に、XML 形式でデータ転送を行う。構

造化されたデータの転送を目的と仕た標準言語で有る XML(eXtensible Markup Language)は、現在

多くのアプリケーションで、データ転送の為に採用されて居る。

■ .NET データプロバイダ

.NET データプロバイダは、データベースへの接続や、コマンドを実行してデータの取得や更新を行う

為のコンポーネントの集合で、コネクション、データアダプタ、コマンド、データリーダから構成され

る。

コネクション

特定のデータベースへの接続を確立するコンポーネントで有る。

データアダプタ

データベースとデータセットの連結するコンポーネントで、下記の機能を有する。

・データベースから取得したデータをデータセットに格納する。

・データセットの内容でデータベースを更新する。

亦、データアダプタは、上記の機能を果たす為に、下記の 4 個のコマンドを有する。

・選択コマンド:必要なデータを抽出する。

・追加コマンド:レコードを追加する。

・削除コマンド:レコードを削除する。

・更新コマンド:レコードを更新する。

データアダプタは、上記のコマンドを実行する時、自動的にデータベースに接続し、処理を終了した後

は、接続を解除する。其の為、データベースへの接続と解除を手動で行う必要は無い。

コマンド

データベースに対して実行するコマンドを保持するコンポーネントで有る。

データリーダ

コマンドを実行した結果、データベースから、読込専用、前方スクロール可能な形で読み込んだデータ

で有る。

猶、Windows アプリケーションを開発する場合は、主にデータアダプタとコネクションを使用し、コ

マンドとデータリーダは、Web アプリケーションの開発に利用する。

VB.NET④ 【VBオブジェクト指向 noa】

-6-

■ データセット

データセットは、アプリケーションが使用するデータベースを、メモリ上に展開した物で有る。データ

ベースと同じ様に、データセットには、複数のテーブルを定義する事が出来る。亦、主キーの様なテー

ブル属性やリレーションシップを設定して、テーブル間の関連付けを定義する事が出来る。アプリケー

ションの実行時には、定義したテーブルにデータを保持する事が出来る。

データセットは、接続するデータソースから完全に独立して居る。其の為、種類の異なるデータベース

から取得したデータを、同じデータセットに保持する事も可能で有る。亦、データセット内のデータは、

データベースの種類に係らず、同じ手法でアクセスする事が出来る。

Access

データベース

Oracle

データベース

SQL Server

データベース

データセット

VB.NET④ 【VBオブジェクト指向 noa】

-7-

■ ADO.NET の特徴 ■

ADO.NET には、多くのデザインツールが用意されて居り、効率良くデータベースアプリケーションを

開発する事が出来る。亦、常時接続する必要が無い為、パフォーマンスの良いアプリケーションを開発

する事が出来る。

■ 非接続型のアーキテクチャ

データセットを利用する事で、アプリケーションは、データベースに常時接続する必要が無く成り、デ

ータベースに接続するのは、データベースからデータセットにデータを取得する時、及び、データセッ

トの内容でデータベースを更新する時丈と成る。

データベースへの接続を維持し続ける為には、システムリソースを大量に消費するが、ADO.NET では

此れを最小限に抑える事が出来る為、アプリケーションのパフォーマンスが低下する事が無い。亦、シ

ステムに懸かる負荷を減少する事が出来る為、同時に多くのユーザに、同じサービスを提供する事が可

能と成る。

■ XML の採用

ADO.NET では、データベースからデータセットにデータを転送する時には、XML 形式で行う。亦、

データセット内のデータを、XML 形式でファイルに出力する事も可能で有る。

XML は、構造化されたデータの転送を目的と仕た標準言語で、現在では多くのアプリケーションで採

用されて居る。其の為、XML をサポートして居るアプリケーション間で有れば、データの転送も簡単

に行う事が出来る。

■ デザインツール

Windows アプリケーションを開発する時、データアクセスの中心に成るコンポーネントは、データア

ダプタとデータセットで有る。

データアダプタは、ウィザードを利用して簡単に作成する事が出来る。データベースの接続に使用する

接続文字列や、データを取得したり更新したりする為の SQL ステートメントを手動で作成する必要は

殆ど無い。

テーブルや主キー、リレーションシップ等のデータセットの構造は、XSD(XML Schema Definition

Language)で定義される。XSD は、XML ドキュメントの構造を定義する為の標準言語で有る。併し

データベースに対しデータの取得や更新を行う丈で有れば、XML や XSD に付いての知識は必要無い。

データセットの構造は、作成したデータアダプタを元にコマンドを実行する丈で、自動的に定義する事

が出来る。

■ 開発効率

ADO.NET には、データアクセス用のコンポーネントをデザインする為のツールが、多数用意されて居

る。例えば、サーバエクスプローラからテーブルをドラッグアンドドロップする丈で、コネクションと

データアダプタがフォームに追加され、データアクセスに必要な殆どの情報が自動的に設定され、此れ

を元に、データセット生成のコマンドを実行すると、データセットを定義する事が出来る。亦、此等の

コンポーネントは、コード入力時に、インテリセンスが表示される等、開発の効率も向上する。

VB.NET④ 【VBオブジェクト指向 noa】

-8-

■ Windows アプリケーションの開発手順 ■

■ 概要

Windows 上で動作するデータベースアプリケーションの開発は、一般に、下記の手順で行うと、効率

良く開発する事が出来る。

■ 新規プロジェクトの作成

先ず、『新しいプロジェクト』ダイアログボックスで、テンプレートから『Windows アプリケーション』

を選択する。

※ プロジェクト名と保存場所は、適宜、適切な物を指定する。

デデーータタアアククセセススのの基基本本

1 新規プロジェクトの作成

2 データ接続の作成

3 データアダプタ・コネクションの作成

4 データセットの作成

5 Window フォームの作成

6 プログラミング

VB.NET④ 【VBオブジェクト指向 noa】

-9-

■ データ接続の作成

データ接続は、デザイン時にデータベースへの接続を確立して、テーブルの構造や、登録されて居るデ

ータを確認する為の機能で有り、サーバーエクスプローラを使用して作成する。

アプリケーションが、データ接続を直接使用する事は無い。此れは、此の後に作成するデータアダプタ

のプロパティを設定する際に使用する。

データ接続を作成するには、『ツール』メニューの『データベースへの接続』を選択する。サーバエク

スプローラが起動して『データリンクプロパティ』ダイアログが表示される。

プロバイダの選択

表示された『データリンクプロパティ』ダ

イアログの『プロバイダ』タブで、データ

ベースの接続に使用する OLE DB プロバ

イダを選択する。

Microsoft Access 2000 形式のデータベー

スに接続するには Microsoft Jet 4.0 OLE

DB Provider を選択し、『次へ』ボタンを

クリックする。

データベースの選択

同ダイアログの『接続』タブで、データベ

ース名入力用テキストボックスに、接続す

るデータベースの名前を入力する。

通常は、フルパス名を指定するが、ファイ

ル名丈を指定した場合は、実行ファイルが

在るフォルダが指定された事に成る。併し

ファイル名丈の指定は、データ接続の参照

等が出来なく成る等、弊害が有る為、フル

パスで指定し、データベースのパスを変更

する度に、接続の変更を行う事を推奨する。

猶、右側の『…』ボタンをクリックすると、

『Access データベースの選択』ダイアロ

グが表示され,データベースを選択する事

が出来る。

接続のテスト

同タブの『接続のテスト』ボタンをクリックすると、接続の成否

を示すダイアログが表示される。『接続のテストに成功しました。』

と謂うメッセージが表示されゝば、『OK』ボタンをクリックし、『デ

ータリンクプロパティ』ダイアログを終了する。

VB.NET④ 【VBオブジェクト指向 noa】

-10-

作成したデータ接続は、サーバエクスプローラで確認する事が出来る。

■ データアダプタとコネクションの作成

データアダプタは、データベースとデータセットとの間で、データを遣り取りする為のコンポーネント

で有る。データアダプタ構成ウィザードを使用して作成する。

接続するデータベースへの情報は、コネクションが保持して居るが、此れを手動で作成する必要は無い。

ウィザードを完了すると、データアダプタと同時にコネクションも追加される。

データアダプタ構成ウィザードの起動

データベースからデータを取得したり、データベースを更新する為のコマンドは、データアダプタが保

持する。ツールボックスの『データ』タブで OleDbDataAdapter コンポーネントをダブルクリックす

るか、フォームにドラッグ&ドロップすると、『データアダプタ構成ウィザード』が起動するので、『次

へ』ボタンをクリックする。

データ接続は、アプリケーションから独立したオブジェクトで有り、同じ

データ接続を複数のアプリケーションで使用する事が出来る。

データ接続を設定する『データリンクプロパティ』ダイアログで重要なの

は、『プロバイダ』タブと『接続』タブで有る。接続のテストに成功しない

場合は、設定値に間違いが有るので、確認する必要が有る。

データ接続は、常にサーバーエクスプローラに表示されて居り、右クリッ

クする事に依り、最新の情報に更新したり、削除したり、接続の変更を行

う事が出来る。

亦、データ接続のノードを開く事に依り、テーブル一覧やフィールド一覧

を確認する事や、フィールド属性をプロパティウィンドウで確認する事も

出来る。

データアダプタは、使用するデータベースの種類に依り、使用するコンポ

ーネントが異なる。Microsoft AccessやOracleや SQL Server等のOLE DB

でアクセスするデータソースの場合は OleDbDataAdapter コンポーネント

を使用し、SQL Server 7.0 以上のデータソースの場合は SqlDataAdapter

を使用する。

データアダプタの種類に依り、コマンドの定義の種類に差異が有り

OleDbDataAdapter では SQL ステートメントでしか定義出来ないが

SqlDataAdapter では SQL ステートメント以外にストアドプロシージャを

使用して定義する事も出来る。

データアダプタは、データベースからデータの読込(Select)、レコードの

追加(Insert)、削除(Delete)、更新(Update)を行う為の4種のコマン

ドを保持して居り、夫々れ、SelectCommand プロパティ、InsertCommand

プロパティ、DeleteCommand プロパティ、UpdateCommand プロパティ

に設定される。猶、各コマンドは、必要が無い場合、プロパティウィンド

ウで▼ボタンをクリックし『なし』に設定する事で削除する事が出来る。

VB.NET④ 【VBオブジェクト指向 noa】

-11-

データ接続の選択

ドロップダウンリストボックスにはサーバエクスプローラに表示されて居るデータ接続の一覧が表示

されるので、使用するデータ接続を選択し、『次へ』ボタンをクリックする。

クエリの種類の選択

此処では、データアダプタが読み書きする方法を選択する。『SQL ステートメントの使用』が選択され

て居る事を確認して、『次へ』ボタンをクリックする。

VB.NET④ 【VBオブジェクト指向 noa】

-12-

SQL ステートメントの生成

データベースからデータを取得する為の SQL ステートメントを作成する。テキストボックスに

SELECT 文を入力し、『次へ』ボタンをクリックする。猶、SQL ステートメントは、クエリビルダでも

作成する事が出来る。

コマンドの自動生成

前記で設定した SQL ステートメントを基にデータアダプタのコマンドが自動生成され、結果が表示さ

れるので、『完了』ボタンをクリックする。

VB.NET④ 【VBオブジェクト指向 noa】

-13-

但し、SELECT 文の FROM 句に、主キーが設定されて居ないテーブルを指定した場合は、更新コマン

ドと削除コマンドが、亦、結合テーブル(複数のテーブルを JOIN 句で連結したテーブル)を指定した

場合は、追加コマンドと更新コマンドと削除コマンドが自動生成されない。此の様な場合は、更新用の

コマンドを手動で作成する必要が有る。

データアダプタとコネクションの確認

データアダプタ構成ウィザードを完了すると、実行時に画面に表示されないコンポーネントを表示する

領域で有るコンポーネントデザイナに、OleDbDataAdapter1 と OleDbConnection1 が追加される。

猶、データアダプタの名前は、プログラムでも参照する為、此の時点で、参照するテーブルが解る様な

名前に、プロパティウィンドウの Name プロパティを変更して置く事が望ましい(此処では、odaBook

と ocnBookに変更したと仕て、以降の話を進める)。

VB.NET④ 【VBオブジェクト指向 noa】

-14-

■ データセットの作成

実行時にデータベースから取得したデータを保持する為に、データセットの構造を定義する必要が有る。

前記で作成したデータアダプタを基に『データセットの生成』コマンドを実行すると、データテーブル

の構造を定義した XSDを生成する事が出来る。

データセットの作成

デザイナ上のデータアダプタ(OleDbDataAdapter1→odaBook)を選択し、『データ』メニューの『デ

ータセットの生成』を選択すると、『データセットの生成』ダイアログが表示される。

データセット選択で『新規作成』を選択し、作成するデータセットの名前を入力して『OK』ボタンを

クリックすると、データセットの構造が定義され、ソリューションエクスプローラにスキーマ(*.xsd)

が、コンポーネントデザイナにデータセットのインスタンスが追加される。

猶、此処では、『SQL ステートメントの生成』で指定したテーブルが『データセットに追加するテーブ

ルの選択』ボックスで選択されて居り、『此のデータセットをデザイナに追加する』チェックボックス

がチェックされて居る事を確認して置く。亦、データセットの名前は、プログラムでも参照する為、接

続するデータベースが解る様な名前を付けて置く事が望ましい。

VB.NET④ 【VBオブジェクト指向 noa】

-15-

■ Windows フォームの作成

データベースから取得したデータは、テキストボックスやデータグリッド等のコントロールに出力し、

値を編集する事が出来る。此れを『データ連結』又は『データバインディング』と謂う。コントロール

に出力するデータは、デザイン時にプロパティウィンドウで設定する事が出来る。

データグリッドの追加

データベースから取得したデータを出力する為に、ツールボックスの『Windows フォーム』タブより

DataGrid コントロールをフォームに追加し、プロパティを下記の様に設定する。

コントロールの種類 プロパティ プロパティの設定値

データグリッド Name dgdDisp

DataSource dsBook1

DataMember 本

Anchor Top, Bottom, Left, Right

コマンドボタンの追加

テーブルからデータを取得する為のボタン(btnLoad)と、テーブルを更新する為のボタン(btnUpdate)

をフォームに追加し、プロパティを下記の様に設定する。

コントロールの種類 プロパティ プロパティの設定値

ボタン1 Name btnLoad

Text 読込

ボタン2 Name btnUpdate

Text 更新

VB.NET④ 【VBオブジェクト指向 noa】

-16-

■ プログラミング

データアクセス用のコンポーネントを作成する丈では、データベースを操作する事は出来ない。

ADO.NET では、データベースから取得したデータをデータセットに格納する処理をプログラミングし

なければ成らない。亦、データを連結したコントロールで値を変更した場合は、其の内容でデータベー

スを更新する処理も、プログラミングする必要が有る。

データを取得するプログラム

ボタン(btnLoad)の Click イベントハンドラに下記のコードを記述する。

' ボタン(読込)がクリックされた時の処理

Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnLoad.Click

odaBook.Fill(dsBook1, "本")

End Sub

ボタン(btnUpdate)の Click イベントハンドラに下記のコードを記述する。

' ボタン(更新)がクリックされた時の処理

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnUpdate.Click

odaBook.Update(dsBook1, "本")

MsgBox("更新しました。", MsgBoxStyle.Information, "更新")

End Sub

■ 実行

アプリケーションを実行して観ると、実行直後には、データグリッドのデータ領域には、何も表示され

ない。『読込』ボタンをクリックすると、データベースのテーブルの内容が表示される。

此のデータグリッドでは、下記の編集操作を行う事が出来る。但し、主キーが設定されて居るフィール

ドには、重複した値や Null 値を設定する事は出来ない。

値の変更

値を編集するセルにカーソルを移動して、値をキー入力する。

新規レコードの追加

データグリッドの最下行の空行にカーソルを移動して、レコードデータをキー入力する。

レコードの削除

レコードセレクタ(左端列)をクリックして行を選択して、Delete キーを押す。

猶、データグリッドでの編集は、データセット内のデータを編集したに過ぎず、編集した内容をデータ

ベースに保存するには、更新(Update)を行う必要が有る。

VB.NET④ 【VBオブジェクト指向 noa】

-17-

コネクションの Name プロパティ

コネクションの名前を取得・設定するプロパティ

Object.Name = 文字列

データアダプタの各コマンドの Connection プロパティの設定に使用するコネクションの名

前を取得・設定する。

上記の Objectには、有効な OleDbConnection コンポーネントを指定する。

データアダプタ構成ウィザードでOleDbDataAdapterと同時に生成されるOleDbConnectionの名前で

有り、自由に設定する事が出来るが、実行時に名前を変更する事は、混乱を招く原因と成る為、避ける

可きで有る。猶、デザイン時に、名前を変更すると、対応するデータアダプタの Connection プロパテ

ィの値も自動的に更新される。

コネクションの ConnectionString プロパティ

データベースへの接続情報を取得・設定するプロパティ

Object.ConnectionString = 文字列

データベースに接続する為のプロバイダ名やデータベース名等の情報を取得・設定する。

上記の Objectには、有効な OleDbConnection コンポーネントを指定する。

接続文字列は、サーバーエクスプローラでデータ接続を作成する時、『データリンクプロパティ』ダイ

アログで設定した値を基に、自動的に生成され、特に編集する必要は無い。

接続文字列に含まれる主なキーワードは、下記の通りで有る。

キーワード 意味

Provider 接続するデータベースに対応する OLEDB プロバイダ名

DataSource 接続するデータベースのファイル名(パスを含む)

UserID データベースのログインに使用するユーザーID

Password データベースのログインに使用するパスワード

Integrated Security 接続のセキュリティ保護設定

Initial Catalogue データベース名

下記に、主なデータベースと、其れに対応する OLEDB プロバイダを示す。

データベース プロバイダ

Microsoft Access 97 形式 Microsoft Jet OLE DB 3.51 Provider

Microsoft Access 2000 形式 Microsoft Jet OLE DB 4.0 Provider

Oracle データベース Microsoft OLE DB for Oracle

Microsoft SQL Server Microsoft OLE DB for SQL Server

ODBC データソースにアクセスする場合は、ODBC.NET データプロバイダを使用する。此のプロバイ

ダは、http://msdn.microsoft.com/downloads からダウンロードする事が出来る。

機 能

書 式

解 説

機 能

書 式

解 説

VB.NET④ 【VBオブジェクト指向 noa】

-18-

データアダプタの Command プロパティ

SQL ステートメントやストアドプロシージャを取得・設定するプロパティ

Object.SelectCommand = SQL ステートメント (選択コマンド)

Object.InsertCommand = SQL ステートメント (追加コマンド)

Object.DeleteCommand = SQL ステートメント (削除コマンド)

Object.UpdateCommand = SQL ステートメント (更新コマンド)

データソース内のレコードを操作する為の SQL ステートメントやストアドプロシージャを

取得・設定する。

上記の Objectには、有効な OleDbDataAdapter コンポーネントを指定する。

設定値の SQL ステートメントには、SQL ステートメントかストアドプロシージャの孰れかを指定する。

SelectCommand には、テーブルから指定したレコードを取得する SELECT 文が格納される。

InsertCommand には、テーブルに新しいレコードを追加する INSERT 文が格納される。

DeleteCommand には、テーブルからレコードを削除する DELETE 文が格納される。

UpdateCommand には、テーブルの内容を更新する UPDATE 文が格納される。

此等は、データアダプタ構成ウィザードで、元と成る選択クエリを指定する丈で、各コマンドが自動生

成されるが、此のプロパティを変更する事に依り、自由に書き換える事が出来る。

此等のプロパティは、ノード内に更に子プロパティを持つ。代表的な物を、下記に示す。

CommandText プロパティ

コマンドの内容を管理するプロパティで有る。右端の『…』ボタンをクリックすると、クエリビルダが

起動して、コマンドを編集する事が出来る。

Connection プロパティ

データベースへの接続情報を保持するプロパティで有る。此の値は、データアダプタ構成ウィザードで

OleDbDataAdapter と同時に生成される OleDbConnection の Name プロパティの値で有る。

Parameters コレクション

追加コマンド、削除コマンド、更新コマンドで、処理の対象と成るレコードを特定する為のパラメータ

を管理するプロパティで有る。右端の『…』ボタンをクリックするとコレクションエディタが起動して

パラメータを確認する事が出来るが、特にパラメータの内容を変更する必要は無い。

猶、不要なコマンドは、Command プロパティの右端の『▼』ボタンをクリックして、『なし』を選択

すると、削除する事が出来るが、削除したコマンドは、自動で生成する事は出来ない為、注意を要する。

機 能

書 式

解 説

VB.NET④ 【VBオブジェクト指向 noa】

-19-

データアダプタの Fill メソッド

データアダプタの選択コマンドを実行するメソッド

Object.Fill(データセット名, データテーブル名)

データセット名とデータテーブル名を使用して、データソース内の列と一致する様にデータ

セット内の行(レコード)を追加・更新する。

引数のデータセット名には、レコードと、必要に応じてスキーマを格納する為のデータセットを指定し

必ず指定する。通常は、『データセットの生成』コマンドを実行した時にコンポーネントデザイナに追

加されるデータセットのインスタンスの名前を指定する。

引数のデータテーブル名には、テーブルマップに使用するソーステーブルの名前を指定し、必ず指定す

る。通常は、データセットに定義されて居るデータテーブルの名前を指定する。特に変更しない限り、

データテーブルの名前は、SELECTステートメントの FROM句に指定したテーブルと同じ名前に成る。

Fill メソッドは、下記の順序で操作を行う。

1.SelectCommand の Connection プロパティに従いデータベースに接続する。

2.SelectCommand の CommandText プロパティに定義されて居る SQL 文を実行する。

3.取得したデータをデータセットに格納する。

4.データベースへの接続を解除する。

データアダプタの Update メソッド

データセット内の変更を更新するメソッド

Object.Update(データセット名, データテーブル名)

データセットに加えられた追加・更新・削除をデータベースに反映させる。

引数のデータセット名には、データソースの更新に使用するデータセットを指定し必ず指定する。通常

は、『データセットの生成』コマンドを実行した時にコンポーネントデザイナに追加されるデータセッ

トのインスタンスの名前を指定する。

引数のデータテーブル名には、テーブルマップに使用するソーステーブルの名前を指定し、必ず指定す

る。通常は、データセットに定義されて居るデータテーブルの名前を指定する。特に変更しない限り、

データテーブルの名前は、SELECTステートメントの FROM句に指定したテーブルと同じ名前に成る。

Update メソッドは、下記の順序で操作を行う。

1.各コマンドの Connection プロパティに従いデータベースに接続する。

2.各コマンドの CommandText プロパティに定義されて居る SQL 文を実行する。

3.データベースへの接続を解除する。

上記の各コマンドとは、InsertCommand、UpdateCommand、DeleteCommand を謂い、何のコマン

ドを実行するかは、データテーブルに為された編集操作に応じて、データアダプタが判断する。例えば

レコードの削除丈を行った場合は、削除コマンド(DeleteCommand)丈が実行され、追加コマンドや

更新コマンドは実行されない。

機 能

書 式

解 説

機 能

書 式

解 説

VB.NET④ 【VBオブジェクト指向 noa】

-20-

データ連結を行う為のプロパティ

データ連結を行うプロパティ

Object.DataSource = データソース名

Object.DataMember = データメンバ名 (複合データバインディング)

Object.Text = データメンバ名 (単純データバインディング)

フォーム上のコントロールとデータを連結する。

Windows フォームのコントロールにデータを連結するには、下記の2種類の方法が有る。

単純データバインディング

コントロールにデータテーブルの1フィールドを連結する方法で有る。テキストボックスやラベルにデ

ータを連結する場合に使用する。此の場合は、Text プロパティを設定する丈で良い。

複合データバインディング

コントロールにデータテーブルの複数レコードを連結する方法で有る。データグリッドやコンボボック

スやリストボックスにデータを連結する場合に使用する。此の場合は、DataSource プロパティと

DataMember プロパティを設定する。

上記の Objectには、有効な Windows フォームのコントロールを指定する。

設定値のデータソース名には、連結するデータテーブルを定義したデータセット名を指定し、必ず指定

する。通常は、『データセットの生成』コマンドを実行した時にコンポーネントデザイナに追加される

データセットのインスタンスの名前を指定する。

設定値のデータメンバ名には、コントロールに出力するデータテーブル(複合データバインディングの

場合)か、フィールド(単純データバインディングの場合)を指定し、必ず指定する。此の値は、プロ

パティウィンドウで選択可能で有る。

猶、複合データバインディングの場合は、単純にプロパティウィンドウで DataSourec プロパティや

DataMember プロパティを選択して、右端の『▼』ボタンをクリックして表示される一覧から設定項目

を選択すれば良いが、単純データバインディングの場合は、単純にプロパティウィンドウで Text プロ

パティを選択しても値を設定する事は出来ない。此の場合は、DataBindings のノードを開き、其の中

の Text プロパティを選択して、右端の『▼』ボタンをクリックして表示される一覧から設定項目を選

択(ダブルクリック)する。

亦、DataSource プロパティには、データセット名の他に、データテーブルやデータビューを指定する

事が出来る。此の場合は、DataMember プロパティを設定する必要は無い。

機 能

書 式

解 説

VB.NET④ 【VBオブジェクト指向 noa】

-21-

■ Windows フォームを使用したデータベース操作 ■

■ 概要

データセットに保持して居るデータは、フォーム上のコントロールに連結して、値を表示したり、編集

したりする事が出来る。此処では、Windows フォームにデータを連結して、データを編集する方法に

付いて解説する。

■ レコードの移動

ADO.NET には、カレントレコードと謂う概念が無い。其の為、ADODB の様にカレントレコードを移

動する為の MoveFirst、MovePrevious、MoveNext、MoveLast と謂う命令は無い。

デデーータタアアククセセススのの利利用用