Visual Basic データベース講座
VB2005 対応

 

Visual Basic 中学校 > データベース講座 >

第2回 データベースを見る、いじる

2006.11.18 

VBの開発環境を使用してデータベースの内容を見たりいじったりすす方法を説明します。具体的なプログラム例はまだ登場しません。

概要

・ Animals.mdbのダウンロード

・データベースエクスプローラ(またはサーバーエクスプローラ)を使って、データベースに接続し、内容を照会・編集する方法の説明。

・OLE DBプロバイダについて

 

1.はじめに

 

さて、今回は実際にデータベースの中をのぞいてみる方法といじってみる方法を説明します。そのためにはデータベースを用意しなければなりません。ゼロからデータベースを作成するプログラムを作ることもできますが、今回はすでに作成されているデータベースを利用して話を進めます。

下のリンクをクリックしてデータベースをダウンロードしてください。

データベースのダウンロード    Animals.lzh    26.9KB

※注:2007年2月5日にAnimals.mdbを改訂しました。それ以前の版よりテーブル・項目・データが追加されています。

このデータベースは動物のデータベースです。データは私がいろいろな本を見ながら適当に打ち込んだものなので確かではありません。あくまでVBの練習用のものとしてご利用ください。

また、データベースの著作権は私に帰属します。私に無断で転載・配布・販売等することはなさらないようにお願いいたします。

さて、ダウンロードしたファイル Animals.lzh を解凍すると Animals.mdb というファイルが解凍されます。このAnimals.mdbがデータベース講座で使うデータベースの本体です。 このファイルはどこに置いてもよいのですが、これからの説明ではC:\Database\にこのmdbを置いておくという前提で進めます。ですからできるだけパスを合わせておいた方が便利でしょう。

こことは違う場所に配置する場合はこれからの説明は適宜読み替えてください。

拡張子がmdbのファイルはAccessで使用するデータベースの拡張子で、一般の人に一番よく使われているデータベースの形式だと思います。Access2007以降ではデータベースの拡張子はaccdbになりますが、それでもmdbを扱うことはできるのでAccess2000以上をお持ちの方は直接このAnimals.mdbをダブルクリックして中を見ることもできます。ただし、当講座ではAccessは必要ありませんので持っていない人もご安心ください。

 

2.データベースを見る

 

2-1.データベースエクスプローラの表示

ではこのAnimals.mdbの中身を実際に見てみましょう。VB自体にある程度データベースを管理・制御する機能が用意されているのでVBの開発環境を使ってmdbの中を見たりいじったりすることができます。

VBを起動したら、プロジェクトを作成したり、開いたりしないで[表示]メニューの[データベース エクスプローラ]を開いてください。「データベースプローラ」はVB2005のExpress Editionにしか存在しません。他のバージョンのVBを使っている場合は「サーバー エクスプローラ」に同じ機能がありますのでこれを開いてください。

メモ  -  プロジェクトとの無関係性

これから説明するデータベースエクスプローラ(またはサーバーエクスプローラ)の機能は、個々のプロジェクトの設定やプログラムとは全く無関係で完全に独立しています。そのことを示すために本文中では「プロジェクトを作成したり、開いたりしないで…」と記述していますが、実際にはプロジェクトを作成したり開いたりしても完全にデータベースエクスプローラ(またはサーバーエクスプローラ)の機能を使用することができます。

左側にデータベースエクスプローラが表示されている

■画像1:左側にデータベースエクスプローラが表示されている(VB2005 Express Edition)。

通常の配置ですと画面の左側にデータベースエクスプローラ(またはサーバーエクスプローラ)が表示されます。

以下の説明はVB2005 Express Editionに沿って進めます。他のVB.NET(2002), VB .NET2003, VB2005でも同じ操作が可能ですので、画面や言葉は少し異なる場合があるかもしれませんが説明を参考に実践してみて下さい。

 

2-2.「接続」

このデータベースエクスプローラ(またはサーバーエクスプローラ)にはさまざまなデータベースを操作する機能が備わっています。そのためにまず目的のデータベースを指定する必要があります。

この目的のデータベースを指定して利用可能な状況にする作業、手続きを「接続」と呼びます。「接続」はデータベースを扱う上では非常に重要な言葉ですのでおろそかにしないで注意して下さい。

データベースに接続するにはデータベースエクスプローラ(またはサーバーエクスプローラ)上で「データ接続」とある部分を右クリックして「接続の追加」を選択します。

接続の追加

■画像2:接続の追加(VB2005 Express Edition)。

そうすると、接続するデータベースを指定する画面が表示されるので適切な情報を指定します。

VB2005 Express Editionの場合は、まずデータソースの選択画面が表示されます。

データソースの選択

■画像3:データソースの選択(VB2005 Express Edition)。

今回我々が使用するデータベースAnimals.mdbはAccessのデータベースですから、ここでは「Microsoft Access データベース ファイル」を選択して[続行]をクリックします。

そうすると、データベースファイル名やユーザー名・パスワードを入力する画面に切り替わります。

mdbへの接続情報の指定

■画像4:mdbへの接続情報の指定(VB2005 Express Edition)。

ここで、ユーザー名は「Admin」でパスワードは空のままにしてください。データベースファイル名にはAnimals.mdbのある場所を指定します。指定したら[OK]をクリックする前に[接続の確認]をクリックして設定が正しいことを確認してみましょう。

よければ[OK]をクリックします。これで「接続」の設定は完了です。

メモ  -  VB2005 Standard Edition以上の場合

Standard Edition以上のVBでは、次の画面が表示される場合があります。

はじめに表示されるSQL Serverへの接続設定画面

■画像5:はじめに表示されるSQL Serverへの接続設定画面(VB2005)。

これはAccessではなく、SQL Serverに接続するための設定画面です。もし、この画面が表示されたらデータソースのところにある[変更]ボタンをクリックして、「Microsoft Access データベース ファイル」を選択して下さい。

データソースの選択

■画像6:データソースの選択(VB2005)。

後は、Express Editionと同じ手順です。

 

メモ  -  VB.NET(2002), VB.NET2003の場合

VB.NET(2002), VB.NET2003の場合は、次の画面が表示されます。

データ リンク プロパティ

■画像7:データ リンク プロパティ(VB.NET2002, VB.NET2003)

これはAccessではなく、SQL Serverに接続するための設定画面です。もし、この画面が表示されたら画面上部にある[プロバイダ]タブを選択して、一覧の中から、「Microsoft Jet 4.0 OLE DB Provider」を選択して下さい。

プロバイダの選択

■画像8:プロバイダの選択(VB.NET2002, VB.NET2003)

後は画面は少し異なりますが、本文で説明しているのと同じ手順で接続設定が完了します。

 

2-3.データベースの中身を確認

接続さえ完了すれば、あとはツリー形式でデータベースの中をいろいろと見たり、設定やデータを変更したりすることができます。

まずは[テーブル]ノードを展開させてみてください。

データベースに接続できたところ

■画像9:データベースに接続できたところ(VB2005 Express Edition)。

このAnimals.mdbには「T_綱マスタ」、「T_動物マスタ」、「T_目マスタ」、「T_門マスタ」という4つのテーブルがあることがわかります。

「テーブル」と言うのは前回も説明したように実際にデータを入れておく場所のことです。テーブルが4つに分かれている理由も前回説明していますが、現段階ではあまりこだわらなくてもよいでしょう。

データベースエクスプローラ(またはサーバーエクスプローラ)を使うと、さらにテーブルを展開してどのような情報が保存されているのかを確認することもできます。

テーブルの展開

■画像10:テーブルの展開(VB2005 Express Edition)。

上の画像では[T_動物マスタ]テーブルには「動物ID」、「名前」、「画像」、「目ID」、「説明」という5つの情報が格納されていることがわかります。

実際のデータも見てみましょう。[T_動物マスタ]を右クリックして「テーブルデータの表示」を選択して下さい。次のようにデータがどかどかと表示されます。

テーブルの内容を表示

■画像11:テーブルの内容を表示(VB2005 Express Edition)。

ここに表示されているデータは私があらかじめサンプルとして登録しておいたものです。この一覧を直接編集してデータを修正したり、削除したり、新規登録したりすることもできます。でも、このデータは次回以降でも説明のために使用する予定なのであまり大胆にはいじらないで置いてください。または、いじってもmdbファイルをバックアップしておけばいつでも元の状態に戻せます。

博士のワンポイントレッスン
V太 V太:博士~。
博士 博士:なんじゃ、なんじゃ。まさかmdbのバックアップ方法がわからないとか言うんじゃあるまいな。
むぅ。
普通のファイルと同じじゃ。コピーして好きなところにおいておけば良いんじゃ。元の状態に戻したいときはコピーを本体に上書きしてしまえば良いんじゃ。
B子:あら。いくらなんでもそんなことは分かっていたわよね?
う、うん。

 

3.総括

 

これで、どのようなmdbでもVBを使って自由に扱うことができるようになりました。データベースエクスプローラ(またはサーバーエクスプローラ)を使うと今紹介した以外にもさまざまな機能が利用できます。たとえば、テーブル自体を追加するなどと言うこともできますがこういった機能は必要な都度紹介していくことにします。

また、今はAccessの例で説明しましたが、SQL ServerやOracleなどのほかのデータベースに接続する場合も接続の設定方法が異なるだけで基本的な接続手順は同じですし、接続した後の画面や操作方法も同じです。

それから、この手順で行うデータベースのアクセスはみなさんのプログラムとは一切関係ない点に注意して下さい。プロジェクトを開かなくてもこのデータアクセス機能が利用できることからわかるように、このデータアクセス機能を利用してどのデータベースに接続しようが、設定を変更しようがそれは個々のプログラムには直接影響しません。

VBのプログラム機能と今回紹介したデータベースへのアクセス機能はお互いに独立した、まったく関係ないものであるという点に注意して下さい。今後データベースアプリケーションをプログラムしていく上で、何かプログラムに不具合があった場合、一生懸命データベースエクスプローラでをいじっても無駄です。「プログラムに」を強調してある点にも注意を払ってください。

メモ  -  データベースエクスプローラとサーバーエクスプローラの注意点

データベースエクスプローラはサーバーエクスプローラの機能縮小版です。サーバーエクスプローラにできることがデータベースエクスプローラではできない場合があります。最も大きな違いは接続できるデータベースの違いです。

サーバーエクスプローラは後述するプロバイダさえ用意されていればどのようなデータベースでも扱えるのに対しデータベースエクスプローラではMDBとSQL Server Express Editionにしか接続できません。(データベースエクスプローラで扱えなくてもVBのプログラムから操作することは問題なくできます。)

また接続するデータベースの種類によっても機能が異なる場合があります。たとえば、AccessのMDBに対してはテーブルの追加やテーブル自体の設定の変更は行えませんが、SQL Serverではこういった操作も簡単に行えます。

なお、データベースエクスプローラでSQL Server Express Editionのテーブルの追加や設定の変更が行えるのかどうか私は未確認です。

 

4.OLE DBプロバイダ

 

さて、今の作業を通じて得られるものを少し整理して説明しましょう。

まず、接続の初めにAccessとかSQL Serverとかのデータソースを選択する必要がありました。下の画面はStandard Edition以上でのデータソース選択画面です。

データソースの選択

■画像12:データソースの選択(VB2005)。

このデータソースという言葉は「データベースの種類」と置き換えてもよさそうですね。この画面で選択できるデータソースの種類は使用しているパソコンにインストールされているデータベースソフトによって異なります。

データソースの下に「データプロバイダ」という欄があります。これはちょっとよくできている面白い仕組みで、重要性も高いですから特に説明しておきます。

データベースプロバイダとはデータベースとアプリケーションの仲立ちをしてくれるソフトウェアです。本来はデータベースは製品によって機能や性能が異なりますので、データベースに対する命令も製品ごとに区別しなければならないのですが、そうするとかなり不便なことになってしまうのでこのような仲立ちのソフトウェアを使用します。この仲立ちのソフトウェアのことを「プロバイダ」と呼びます。

このようにアプリケーションとターゲットソフトウェアとの間に仲立ちのソフトウェアを介在させると言う手法は、非常に柔軟性があるためにいろいろなシーンで使用されています。たとえば、プリンタドライバはアプリケーションとプリンタの間を仲立ちしてくれるソフトウェアです。プリンタドライバがなかった時代はプリンタの機種によって別々のプログラムを組む必要があったというのですから苦労のほども知れます。

データベース界では仲立ちのソフトウェアの標準的な規格としてOLE DB(読み方:OLE DB = オーエルイーディービー)というものがあり、今回はこの規格を利用してAccessデータベースと情報を受け渡ししています。この場合、仲立ちのソフトウェアのことを「OLE DBプロバイダ」と呼びます。

OLE DB規格に準拠しているプロバイダがあれば、どのようなものでもVBでは使用できます。VB以外でもC#など他の言語からも使用できて便利です。ですから、もしAccess以外のデータベースに接続したいと思った場合には、そのデータベース用のOLE DBプロバイダが提供されているかが大きなポイントになります。

 

 

5.データと表示

 

ところで、テーブルの中にあるデータの一覧を実際に見てみて一見Excelで書いた表のようだなぁと思われたでしょうか?確かにテーブルというのはExcelの表のようなものです。

しかし、ここのところでデータベース初心者の方は少し誤解してしまう場合があるようです。たとえば、「セルに色をつけるのにはどうしたらよいのか?」という質問が飛び出してくるのならば完全にデータベースとテーブルについて誤解しています。

データベースとは文字通り「データ」を集めておく場所のことで、テーブルとはその中でも実際にデータを持っている部分です。データベースの中でも最も重要なものと言っていいでしょう。

一方Excelの場合は、表のようにして重要なデータを記録しておくことはもちろんできますが、それだけではなく「データの見せ方」も指定することができます。たとえば、セルの色を変更したりフォントを変更したり、いろいろとレイアウトを工夫して見やすく改良することができます。

データベースは「データ」を保持するだけで、Excelのように「データの見せ方」は保持しません。ですから、テーブルの内容を見てセルの色を変えるということはデータベースの発想自体に反するわけです。

もし、色を付けるなどさまざまに工夫してデータを表示したければ、それはみなさんが自分でそのようなプログラムを書くことになります。これがこの講座で説明しようとしているデータベースアプリケーションの重要な役割の1つです。

VBに付属しているデータベースエクスプローラ(サーバーエクスプローラ)や、他の多くのデータベース管理ソフトウェアはデータをシンプルに表示するだけで見せ方を指定する機能はありません。