SQL Server実践的入門 (第1回)

簡単なASPプログラムを作る

横田 秀次郎

 IIS 3.0と同時にASP(Active Server Pages)が利用できるようになったが,その利用の目的は,動的なWebページを簡単に作成し,マイクロソフト製のツールやサーバーと有機的に連携して開発ができるようにするのがねらいだった.企業にとって社内のデータベースとビジネスロジックを組み合わせ,最終的には,Webブラウザーでクライアントがさまざまなデータを操作することができれば,運用コストの軽減となる.

演習用サンプルデータベースの用意

 SQL Serverの中にはpubsという名前のサンプルデータベースが用意されていますが,これは英語版のままなので日本語のものを用意しましょう.  AccessにはNorthwind.mdbというファイル名のサンプルデータベースが用意されていますので,これをSQL Serverにエクスポートして,SQL Serverの学習用データベースとして使用することにします.
(1) サーバーマシンでSQL Serverが実行済みとする.
(2) エンタープライズマネージャでSQL Server中に,新規データベース「cqtest_db」を作成する.
(3) クライアント側ではODBCを使用してSQL Serverに接続するためのDSN(Data Souce Name)としてcqtest_dsを作成する.このDSNでは,接続先データベースとして「cqtest_db」を指定する.
(4) クライアント側でAccessをスタートし,Northwind.mdbをロードした後で,ここに含まれる9つのテーブルを前記DSN「cqtest_ds」経由で,SQL Server中のデータベース「cqtest_db」にエクスポートする.テーブルごとに手動操作してエクスポートするのが面倒であればBackOffice 1月号の付属CD-ROMに入っていた下記ツールを使用してもよい.

Microsoft Access 97 Upsizing Tools


(5) ほかのツールとの比較のためにAccessからエクスポートされたSQL Server中のテーブルにリンクして,中身のデータを覗いて見ておく必要がある.なお,リンクではデータベース構造の変更はできない,
 上記の学習条件ではサーバーとクライアントと呼んだ2台のパソコンがLANでつながれた形であるのが望ましいのですが,学習のためであれば1台のパソコンでサーバーとクライアントを兼ねることも可能です.

開発環境でデータベースを操作することに慣れる

 前項の作業で,SQL Server中にはデータベースcqtest_dbが構築され,その中には9つのテーブルが含まれています.
 このデータベースを使ってInterDev統合開発環境の中で,Data Viewを使用することにより,効率良くデータベースにアクセスすることが可能なことを試しましょう.

● データベースへの接続手続き

 それではデータベースへの接続手続きに入りますが,前もってサーバー側でASPとFrontPage 97サーバー拡張機能,クライアント側でInterDevはすでにインストール済みとして話を進めます.
 「スタート」メニューから「プログラム(P)」-「Microsoft Visual InterDev」-「Visual InterDev 1.0」を選んで統合開発環境Developer Studioを呼び出します.
 この画面で「ファイル[F]」-「新規作成(N)」で図1の新規作成ダイアログを呼び出すと5個のタブが存在するので,この中から「プロジェクト」タブを選びます.
 この画面でWebプロジェクトウイザードを指定しておいて,「プロジェクト名(N)」をキー入力します(ここではtest1とした).
 「位置(C)」にはプロジェクト関係のファイルを収納するディレクトリーを入力します.デフォルトを変えてプライベートな場所を指定するのもよいでしょう.ただし,後で確認することもありますので,ここに記入したデータはメモしておかなければなりません.
 

 次に進むと,図2の「Webプロジェクトウィザード- -ステップ1/2」が呼び出されますので,サーバー名としてIISプログラムが走っているサーバーのマシン名をキー入力します.サーバーとクライアントを兼ねる場合は(local)でもよいです(ここではwinnt3).  さらに次に進むと「Webプロジェクトウィザード- -ステップ2/2」(図3)が呼び出されますが,最初は「新規Webの作成」を選び,「名前」としてデフォルト(プロジェクト名として入力したtest1がそのまま入れられている)のままとします.

 これで条件入力はすべて終了ですから,[完了]ボタンを押し,しばらくするとDeveloper Studioのワークエリア(画面の左側ウインドウ)にFileViewが追加されます(図4).

 File Viewに表示されたディレクトリーとファイルのツリー構造は,これから作成するプロジェクト関係ファイルの収納場所と共通で使用されるファイルを示しています.ここの中身はあえて知る必要はありません.

● 接続インターフェースの埋め込み

 次に,この最小の基本システムに,まずデータベースとの接続インターフェースを埋め込んでみましょう.
 File Viewの2行目のWebのルートディレクトリーを右クリックすると,図5のショートカットメニューが表示されるので,ここで「データ接続の追加(A)」を指定します.  すると「データソースの選択」ダイヤログが呼び出されるので,すでに用意したDSN「cqtest_ds」を指定します(図6).

 この関係の最後のダイアログとして図7の「データ接続プロパティ」が表示されます.「データ接続名称」としてデフォルトではデータベース名と同じ名称が入れられていますが,紛らわしいので,名前を変えておきましょう(cqtest_dp).

 図7の画面の中の「接続ストリングス(C)」には,これまでに設定された内容が反映されていますから,ここで変更などする必要はありませんが,慣れてきたらこのフィールドに直接キー入力して変更することも可能です.
 最後に[接続ビルダ(B)]ボタンを押すと条件設定を終了し,接続作業に入ります.

● 接続の確認

 データベースとの接続作業を終了すると,図8に示したように「File View」の中にデータ接続名称(cqtest_dp)が組み込まれます.逆にデータ接続名称が記入されていれば,データベースとの接続が済んでいることがわかります.
 さらにワークスペースの下部に位置するタブに「Data View」が追加されていますので,このタブをクリックすると図9に示されたようなエンタープライズマネージャのサーバーマネージャにそっくりな階層図が表示されます.
 この画面を少し時間をかけて研究する必要があります.「Data View」中の階層図で+記号をクリックすると,その中身が展開されて表示されます.
 テーブルを展開し,各テーブル名を表示しておいて,その中から特定のものを選び,テーブル名称をクリックするとテーブルの中身が右側のスペースに表示されます.
 この画面でテーブルデータの修正,追加,削除が可能です.これはSQL ServerのほかにAccessが接続相手でも使用できる機能です.これはVisual Database Toolsと呼ばれるツール集のうちでData Viewと呼ばれるものです.
 さらに接続相手がSQL Serverであれば,テーブルの構造の変更,新規作成,削除が使用可能です.これはDatabase Designerと呼ばれるものですが,Data Viewとの機能の境界が見えません.この点は気にする必要はありません.
 この画面でテーブルのほかに,トリガー,ビュー,ストアドプロシージャ,リレーション,インデックス,制約などの取り扱いができますが,一度にあれこれ一気に説明することは入門コースとしては適当ではないので,説明は次の機会とします.すでにSQL Serverに関してある程度まで学習が進んでいる方はいろいろ試してみてください.完全なビジュアルな操作型ツールですから,リズムに乗れれば気楽にどんどん先に進めるはずです.  

ADOを利用したデータベース接続の ホームページを自力で作成

 データベースのテーブルデータをホームベージへ表示する方法は新旧いろいろありますが,これからはADOオブジェクト(マイクロソフトが用意したデータベースに接続し,データを入出力する基本ルーチンの集まりと認識すればよい)を利用する方法が主流になるでしょう.
 ADO中のサブルーチンはHTMLコマンドで直接呼び出すことはできませんが,HTML文に混ぜたVBScriptプログラムから呼び出す仕組みが用意されています.このHTML文とVBScriptプログラムが混在したファイルは,拡張子をASPとすることになっています.
 このファイルを読み込んで処理するのがIISサーバープログラムの追加オプション機能であるASP機能です.ASPファイルを使用する場合はIISサーバーが走っているサーバーマシンでこの追加プログラムが動作している必要があります.
 今回の連載の趣旨はツール「Visual InterDev」を使用して,このASPファイルを能率良く作成することですが,まず簡単なものをNotepadなどのテキストエディターを使用して自力で作成して動かしてみましょう.

ファイル名 ASPSTUDY1.ASP
使用データソース名 cqtest_ds
接続データベース名 cqtest_db
SQL Serverのログインユーザー名 sa
SQL Serverのパスワード (なし)
アプリケーションプログラム名 ASP SAMPLE PROGRAM
(自由に決めてよい)
サーバーのマシン名 WINNT3(各マシンに合わせる)
テーブル名 社員(Northwind.mdbからエクスポートされたもの)
表示項目名 氏名,誕生日,自宅電話番号
使用方法 このファイルをIISサーバーの/Scriptsディレクトリーにおく

ブラウザー側ではアドレスとして下記を指定する.
HTTP://(IPアドレス)/Scripts/ASPSTUDY1.ASP

 


 それでは表1に示す条件に基づくASPプログラムをリスト1で紹介します.
 Webブラウザーで実際に読み出した画面のうちで表の部分を図10に示します.


        <リスト1> データベースを扱うASPプログラム(1)

<HTML>
<HEAD>
<TITLE>データベースに接続したホームページ</TITLE>
</HEAD>
<BODY>
<H3>[ データベースに接続したホームページ ]</H3>
 
 
<% Set Conn = Server.CreateObject("ADODB.Connection") %>
決まり文句の公式
<% Conn.Open "DSN=cqtest_ds;UID=sa;PWD=;APP=ASP SAMPLE
(1) (2) (3)
1. コントロールパネルのODBCで登録したDSN名称
2. SQL Serverの管理者ユーザ名とパスワード
3. SQL Server内部に登録される接続中のプログラム名として
使用される名称
尚,Accessデータベースの場合はこの行は不要である.
PROGRAM;WSID=WINNT3; DATABASE=cqtest_db" %>
(4) (5)
4. SQL Serverの走るマシン名
5. データベース名
<% Set RS = Conn.Execute("SELECT 氏名, 誕生日, 自宅電話番号 FROM
(6)
(6) 表示する項目(フィールド)名
社員") %><P>
(7)
(7) テーブル名
 
<TABLE BORDER=1>
データベース検索結果データを表の中に入れて表示する.
<TR>
<% For i = 0 to RS.Fields.Count - 1 %>
<TD><B><% = RS(i).Name %></B></TD>
表の1行目に項目名をならべる.
<% Next %>
</TR>
<% Do While Not RS.EOF %>
検索結果の行データが無くなるまで表示処理を繰り返す.
<TR>
<% For i = 0 to RS.Fields.Count - 1 %>
<TD VALIGN=TOP><% = RS(i) %></TD>
表の中に検索結果の項目データを横にならべる.
<% Next %>
</TR>
<%
RS.MoveNext
次の行へ
Loop
RS.Close
検索結果データが入ったバッファーを開放する.
Conn.Close
データベースへの接続を切る.
%>
</TABLE>
<BR>
<BR>
</BODY>
</HTML>

 実際に実行するためにコメントを外したソースリストを掲載しておきます.
利用してください.
 
ファイル名 ASPSTUDY1.ASP
 
<HTML>
<HEAD>
<TITLE>データベースに接続したホームページ</TITLE>
</HEAD>
<BODY>
<H3>[ データベースに接続したホームページ ]</H3>
 
ファイル名: ASPSTUDY1.ASP<BR>
使用データソース名:CQTEST_DS<BR>
接続データベース名:CQTEST_DB<BR>
SQL Serverのログインユーザ名:sa<BR>
SQL Serverのパスワード:(なし)<BR>
アプリケーションプログラム名:ASP SAMPLE PROGRAM(勝手に決めてよい)<BR>
サーバーのマシン名: WINNT3(各マシンにあわせる)<BR>
テーブル名: 社員<BR>
表示項目名: 氏名,誕生日,自宅電話番号<BR>
<P>
使用方法: このファイルをIISサーバーの/Scriptsディレクトリーに<BR>
おいてください.<BR>
ブラウザー側ではアドレスとして下記を指定してください.<BR>
HTTP://(IPアドレス)/Scripts/ASPSTUDY1.ASP<BR>
<p>
 
 
<% Set Conn = Server.CreateObject("ADODB.Connection") %>
 
<% Conn.Open "DSN=cqtest_ds;UID=sa;PWD=;APP=ASP SAMPLE PROGRAM;WSID=WINNT3; DATABASE=cqtest_db" %>
 
 
<% Set RS = Conn.Execute("SELECT 氏名, 誕生日, 自宅電話番号 FROM 社員")
%>
<P>
<TABLE BORDER=1>
<TR>
<% For i = 0 to RS.Fields.Count - 1 %>
<TD><B><% = RS(i).Name %></B></TD>
<% Next %>
</TR>
<% Do While Not RS.EOF %>
<TR>
<% For i = 0 to RS.Fields.Count - 1 %>
<TD VALIGN=TOP><% = RS(i) %></TD>
<% Next %>
</TR>
<%
RS.MoveNext
Loop
RS.Close
Conn.Close
%>
</TABLE>
<BR>
---------------- キャンズ -----------------
<BR>
</BODY>
</HTML>
<!-- ファイルASPSTUDY1.ASP終了 -->
 

● 終わりに

 次回からツールInterDevを使用したASPプログラムの作成に入ります.


copyright 1998 横田秀次郎