第71巻 第1号 1998年 6月 41-78
Web
データベースアプリケーションと
開発環境
中 村 邦 彦
I は じ め にW W W
とデータペースを連携させることの必要性が高まっている。イントラ ネットにおける情報提供サービスの中心はW W W
サーパであるが,本格的な イントラネットを構築しようとすれば,単に静的な情報を提供するだけでは済 まない。クライアントの要求に応じて,サーバ側で何らかの処理をし,適切な 情報を返す必要がある。その場合,データベースから情報を取り出したり,更 新したりする必要が発生することも多い。従来,このようなことを実現しよう とすれば高度な技術と高額の経費が必要であったが,今や状況は大きく変わっ ている。 以下本稿では,W W W
サーバとデータベースシステムを連携させるシステム をWebD
a
t
a
b
a
s
e
システム,Web D
a
t
a
b
a
s
e
システムを利用したアプリケー ションプログラムをWebD
a
t
a
b
a
s
e
アプリケーションと呼ぶことにする。 以前は,ハードウェアとしては少なくともワークステーションクラスのコン ピュータが1
台,それに商用のUNIX
を載せる必要があった。それにデータ ベースシステムを加えるとなると相当の出費を強いられる。現在は高価なワー クステーションを使わずに廉価なPC
を使うことができるようになった。最新 のWeb D
a
t
a
b
a
s
e
技術を利用しようとするなら,まずマイクロソフト社のWindowsNT
サーノfに,同じくマイクロソフト社のインターネットインフォ メーションサーバ(IIS)とSQLサーバを使うことが考えられる。その環境では 同 社 が 精 力 的 に 推 進 し て い るActiveX
テ ク ノ ロ ジ ー に 基 づ い たA
c
t
i
v
e
-42- 香川大学経済論叢 42
S
e
r
v
e
r
P
a
g
e
s
(
A
S
P
)
が利用できるし,機能は劣るが手軽にアプリケーションを 作成できるI
n
t
e
r
n
e
tData C
o
n
n
e
c
t
o
r
(
I
D
C
)
も利用できる。更に,従来からのCommon Gateway I
n
t
e
r
f
a
c
e
(CG
I)によるシステムを構成することも可能であ る。I
I
S
の設定もG
r
a
p
h
i
c
a
lU
s
e
r
I
n
t
e
r
f
a
c
e
(
G
U
I
)
を使って行えるのでわかりや すい。ところが WindowsNT サーノ~4
.
,0
は5
クライアントライセンス付きで1
5
7
,0
0
0
円(アカデミックパッケージで8
0
,2
0
0
円),1
クライアントアクセスラ イセンスが6
,5
0
0
円,アカデミックパッケージで4
,1
0
0
円)である。SQL
サー バ6
,,5
は5
ユーザで2
3
5
,8
0
0
円,その他のデータベースサーバも,O
r
a
c
l
e
8
(10
ユーザ2
0
クライアント)が1
6
0
万円,ADABASC
が1
,2
1
5
,0
0
0
円である[1.210 多数の学生に同時に使わせようとすると,筆者の研究費だけではどうにもなら ない額である。 そこで今回はハードウェアとしてはPC
またはPC
サーバを,ソフトウェア はすべてフリーソフトウェアまたはライセンスフリーのソフトウェアを使:ってWeb D
a
t
a
b
a
s
e
システムを構築することにした。 本稿では,きわめて少ない経費で実用に耐え得るWebD
a
t
a
b
a
s
e
システムが 構築できることを示すとともに,実際にWebD
a
t
a
b
a
s
e
アプリケーションを作 成して,その際必要となる基本的な技術について検討する。また,小規模なWeb
D
a
t
a
b
a
s
e
システムをWindows95
上 で 実 現 す る 方 法 とWindows9
5
上 で のWeb D
a
t
a
b
a
s
e
アプリケーション開発環境についても詳しく検討する。I
I
PC-UNIX
によるWebD
a
t
a
b
a
s
e
環境 ここでは実用に耐え得るWeb D
a
t
a
b
a
s
e
環境について述べる。ここでWeb
D
a
t
a
b
a
s
e
環境と言ったのはアプリケーションの開発環境も含めているからで ある。まず必要なものを表2-1に書き出しておく。43 Webデータベースアプリケーションと開発環境 表2-1 PC-UNIXによるWebDatabaseシステム構成 ハードウェア
OS
W W Wサーバ データベース PCサーバまたは通常のPC Linux Apache MySQL スクリプト言語プロセッサ Perl その他 Perl CGIモジュール PerJで日本語を扱うためのモジュール Linuxthreads 2..1 ハードウェア 43 PC-UNIXのためのハードウェアとしては, Windows95を動かすのには 少々力不足のマシンでも使えないことはない。ただし,サーバとして連続運転 を考えているなら,サーバ専用機を用意した方が信頼性の面で安心である。今 回開発用機としてはMicron社のMillenium,運用機としてはDell社のPC サーノ'¥PowerEdge 2200を使った。運用機の主な仕様を表2-2に示す。主記憶 を128MBにしているが,L
i
nux(後述)ベースのWebDatabaseシステムとし ては32MB程度でも大丈夫なのではないかと思われる。このマシンは学生のた めのファイノレサーバとして使うことを考えて主記憶を大きくした。 表2-2 運用機の主な仕様 CPU Pentium 266MHz x 2 主記憶 128MB ハードディスク ULTRA WIDE SCSI 4GBx3 ネットワークアダプタ InteJ EtherExpress100 2..2 PC-UNIX PC-UNIXにはLinux[3,4]かFreeBSD[5-7lを選んでおけばまず間違いはな い。PC-98マシンなら FreeBSDを選ばざるをえないが, PC-AT互換機ならど ちらにするか迷うところである。今回はそのマシンをファイルサーバとしても 使用するので,ディスクキャッシュの機能に優れている Linuxを採用した。こ-44ー 香川大学経済論叢 44 れは実際に両方を使ってみた上での判断である。 FreeBSDにも新しい版には ディスクキャッシュの機能が組み込まれているが,実際に使ってみると主記憶 に未使用部分が十分残っていてもディスクキャッシュとしては使用されなかっ た。それに対して Linuxは,適当なフリーメモリを確保した上で,残りをディ スクキャッシュとして有効に使用してくれた。
Linuxにはいくつもの配布パッケージがある。Slackware,Red Hat, Debian
の3つを比較してみると, Red Hat[89]が最もインストールがしやすく,システ
ム設定においても工夫されているように見えるが,今後に期待してDebian/
GNU
L
i
nux 1..3 ..1[10]にした。 Debian1..3..1には, Linux Kernel2“O“29と2.. 0..30が用意しであり,どちらでも使えるが,現在は安定版の最新パージョンで ある 2..0,32に更新した。カーネノレ再構築の際はシステムに合わせたコンブイグ パラメータを設定した他,Makefileとソースファイルに次のような変更を加え ている。これはRedHatに添付されているiL
i
nuxをインターネットサーバと して使用するための検討J[11]による。 表2-3 Linuxカーネノレへの変更 /usr / src/linux/inc1ude/linux/tasks..hへの変更 NR TASKSを 1024に (defaultis512) /usr/src/linux/inc1ude/linux/fs.hへの変更 NR OPENを 1024に (defaultis256) NR INDOEを5192に NR FILEを4096に /usr / src/linux/Makefi1eへの変更 SMP = 1 コメントの記号を削除して有効にする) 2“3 W W Wサーバ Debian標準のW W WサーノてはApache[12] であり,ノ~'-ジョンは1..1.. 3 であ る。Apacheは豊富な機能が用意されており,人気のある明パN'W
サーバソフト ウェアである。 1998年3月の調査では jpドメインにおける羽川TWサーバの 42..4%を占めた[13]。数多くのUNIXシステムに対応している他, Windowsマ シン版も用意されている。また,常にいくつかの余分なプロセスを起動してお45 Webデータベースアプリケーションと開発環境 -45ー
いて,クライアントからの接続を待つようになっているため,レスポンスが速
いと期待できる。当然ASPはサポートされていないので,データベースとの接
続にはCGIを用いることになる。 Apacheも現在は最新パージョンの
L2
,,5に した。DebianはApacheをDebian流に変更しているのでApacheのオリジナル配 布パッケージをそのままインストーノレしたのでは, Debianの設定と食い違いが 生じる。これらの変更は設定ファイル(ホ"conf)の変更だけでは対応できないの で,一部ソースファイyレを修正しなければならない。 2..4 SQLサーバMySQLEI4] SQLデータベース、サーノてとしてはMySQLを採用した。その他にも使えそう なものはあるが,これが書籍付録のCD-ROMに入っていたのがきっかけで あった[1510非営利目的で使用する場合は無料で使用できるとなっていることも 大きな要因である。インストールしてみるとLinuxですんなり動いたし,ODBCを介してパソコンのAccessやExcelからも接続できたので,これは授業 にも使えると考えた。その他のデータベースは実際には使っていないので断言 はできないが,miniSQLEl6]とPostgreSQLEI71も使えるのではないかと考えてい る[18]0APIはC,C+ +, Java, Perl, Python, TCL対応のものが用意されてい
る。 MySQLは元々がインターネットを介して使用するようになっており, MySQLをインストールしたマシンから使う場合でも, localhostに接続して使 うという形態になっている。したがって一つのマシンに MySQLを導入すれ ば,ネットワーク上の他のマシンからもほぼ同様に使用できることになる。 MySQLを操作するためにmysqlというコマンドインタープリタが用意されて いる。通常,管理者はこれを使ってMySQLの設定,データベースの管理を行 うことになる。最近WindowsNT/95対応のクライアントも公表されたので,ホ ストのLinuxにログインせずに各種の設定が行えるようになった。 MySQLのマニュアlレには, rpostgreSQLはいくつかの新しい機能を備えて いるが, ANSI SQLとODBCの多くの標準的な型と機能を欠いている。通常,
46 香川大学経済論叢 から,パフォーマンスの面でも期待できる。 MySQLの使用形態をまとめると次のようになる。
*
サーバにtelnetでログインしクライアントである mysqlから使う。*
他のUNIXマシンからmysqlを使う。*
ネットワーク上のUNIXマシン(自機を含む)からAPIを介して使う。*
W W Wブラウザ、からW W WサーバとCGIを介して使う。*
Windowsマシンから ODBCを介して使う。*
Windowsマシンからクライアント mysqlを介して{更う。 46MySQLはLinux版のバイナリモジュールが配布されているが,自分のマシ
ンのCPUに合わせたバイナリを作成するためにソースファイルからコンパイ ルすることにした。 まず, PerlとPOSIXThread Library[20Jをインストールする。 Perlについて は
2
.
.
5
で説明する。 ThreadLibraryはLinix専用のものが用意されているの で,それをmakeするだけである。 Linuxには本来ユーザスレッドがなく2[円
MySQLはマルチスレッドのプログラムであるので,このThreadLibraryが 必要になる。このライブラリのスレッドは,実際にはUNIXのプロセスである が,リソースを共有するようになっている。そのためカーネルレベルでスケ ジュールの対象となり,かっ,通常のプロセスよりは軽くなるので,コンテク ストスイッチが速くなるものと期待される。 以下,これ以後のMySQLのインストール作業を簡単にまとめておく。 (1) ソースファイルを入手し,適当なところに展開する。 (2) Configureを実行する。 (3) Makeを実行する。 (4) Make installを実行する。(
5
)
データベースを初期化する。47 Webデータベースアプリケーションと開発環境 -47-ー 用意されているスクリプト..
/
s
c
r
i
p
t
s
/
m
y
s
q
l
i
n
s
t
a
l
l
db
を実行すること によってMySQL
の特権テーブルがセットアップされる。 (6) 起動時のスクリプトを組み込む。 (7) データベースへのアクセス権を設定する。 これらの作業で問題が発生することがあるかもしれない。筆者の環境では, 運用機,テスト機共にパージョン3
.
.2Lxx b
e
t
a
の聞はP
e
r
l
関連のところでエ ラーが発生し,make
が途中で停止した。3
.
.2L26gamma
になってエラーは起 きなくなったので,それ以上は追求していない。起動スクリプトを組み込むに 際しては,マニュアノレにDebian/GNU/
L
i
n
u
x
に対する次のような指示がある のでそれを行う口9
J
。I
f
you want i
n
D
e
b
i
a
n
GNU/Linux t
o
g
e
t
MySQL t
o
a
u
t
o
s
t
a
r
t
when
s
y
s
t
e
m
b
o
o
t
s
,
do t
h
e
f
o
l
l
o
w
i
n
g
:
>cp s
c
r
i
p
t
s
/
m
y
s
q
L
s
e
r
v
e
r
/
e
t
c
/
i
n
i
t
d/mysqL s
e
r
v
e
r
>
/
u
s
r
/
s
b
i
n
/
u
p
d
a
t
e
-
r
c
.
d
mysqL s
e
r
v
e
r
d
e
f
a
u
l
t
s
9
9
MySQL
では,h
o
s
t
,db
,u
s
e
r
の3
つのテーブルでアクセス権の管理を行って いる。これらのテーブルに,接続を許すホスト,ユーザ,パスワード,利用者 権限等が書き込んである。www
サーバからアクセスさせる場合は,l
o
c
a
l
h
o
s
t
からのアクセス権だけを設定しておけばよい。2
.
.
5
CGI
スクリプト言語CGI
スクリプトはP
e
r
l
[22-24]で書くのが手軽で,広く用いられている[お]。ま た,データベースへ接続するためのライブラリも充実している。Debian
にはP
e
r
l
が含まれているが,SQL
サーバとして使用するMySQL
の最新ノ守}ジョ ンはP
e
r
l5
.
.
0
0
4
.
.
xx
を必要とするので,これをインストールする必要がある。P
e
r
l
のC
o
n
f
i
g
u
r
e
プログラムは自動的にL
i
n
u
x
を認識して適切にインストー48- 香川大学経済論叢 48 ルしてくれるので,特に問題はない。途中で数多くの設定パラメータを聞いて くるが,すべて標準設定でうまく動作してくれる。 その他, PerlでCGIスクリプトを使うためにcgi-lib叶
p
l
[
2
6
J
とjcode“p
l
[
2
7
J
を用 意した。 cgi-lib.p
l
はブラウザからサーバに送られる情報をPerlで扱うための ライブラリである。 jcode“p
l
はPerlで日本語コード変換を行うためのライブ ラリで, Perlのライブラリに含まれている Kconv
.
.
p
l
の改良版である。データ ベース内では日本語データはシフトJ
I
S
にしておく方が都合がよいのでそうし ているが,クライアントが送ってくる文字はシフトJ
I
S
とは限らないので,処 理する前に文字コードを変換しておく必要がある。 2..6 日本語処理の問題MySQL
はよくできているのだが,残念ながら日本語すなわちシフトJ
I
S
コードには対応していない。データベースの中ではデータは8ビットがそのま ま保存されており問題がないのだが,確認できたところでは日本語については 次のような問題がある。 (1) フィールド名は英数字に限定されており,日本語は使えない。(
2
)
SQL
文で文字データを書き込むとき,シフトJ
I
S
コードの2
バイト目がO
x
5
c
であると文字化けが発生する。 (3) 日本語文字列をソートしたときに文字コード順にならない。 インターネット経由でシフトJ
I
S
以外の日本語文字コードが来ることは予 想されるところであるが,処理する前にシフトJ
I
S
に変換することにしている ので,ここではその他の日本語文字コードについては考えていない。 (1)は新規データベースを作成するときにはあまり問題にならない。ただし, 既存のデータベースをそのまま転送するときはフィールド名を英数字に書き換 えなければならない。(
2
)
はよくあるケースである。SQL
文の中でデータとしての文字列を記述する49 Webデータベースアプリケーションと開発環境 -49 場合,文字列の始まりと終わりを示す記号が決められている。また文字列の中
にそれらの終端記号を含める手段が必要である。 MySQLは文字列の中では
パックスラッシュ'¥'だけを処理する。したがって注意しなければならない文字 は次の3文字である。
"(Ox22), '(Ox27),¥ (Ox5c)
これらの文字のうちシフト.JISコードの2バイト自にくる可能性があるの は'¥'だけである。MySQLは文字列の中に'¥'があると'¥'自身を取り除き,その 次の文字はそのまま文字列の中に含めるようになっているので,シフト JIS コードの2バイト自に'¥'が来ると文字コードが破壊されるのである。 MySQL はソースコードが公開されているので,該当個所を探してシフト JISコードが 通るように修正することは簡単であるが, MySQLは今後もパージョンアップ が頻繁に行われることが予想されるのでソースコードへの修正は行わず,必要 な個所に'¥'コードを追加する
P
e
r
l
スクリプトを用意することにした。内容 は,文字列の先頭から順番に調べて行って,シフト JISコードの2バイト自に '¥'が見つかったら'¥'をもう一つ追加しておくというものである(付録1)。 実は同様のことは英語版P
e
r
l
の中でも起きる。P
e
r
l
における文字列は二重 引用符で囲む"川"と一重引用符で囲む'…'がある。'の文字列内では¥は処理さ れないがの中では処理されることになっている。したがって"予約しまし た。"と表示しようとして次のように書いた場合,(a)では文字化けが生じるので, (b)または(c)のようにすればよい。参考のために 2バイト目がOx5cになる文字 を表2-4に示した。'予'の2バイト目がOx5cである。 (a) print"予約しました。¥n"; (b) print"予¥約しました。¥n"; (c) print'予約しました。ソ'¥n";-50ー 香川大学経済論叢 50 表2-4 コードの2バイト目がOx5cになる文字
815C - 8B5C 欺 955C 表 9F5C 猷 E95C 鰻 F35C
.
825C.
8C5C 圭 965C 暴 E05C 溶 EA5C鶴 F45C.
835C ソ 8D5C構 975C 予 E15C 喬 EB5C ・ F55C 845C bl 8E5C 蚕 985C t索 E25C 乗 EC5C • F65C.
855C.
8F5C 十 995C 免 E35C 綜 ED5C ・ F75C.
865C 905C 申 9A5C w客 E45C 啓 EE5C • F85C.
875C IX 915C 曾 9B5C 矯 E55C 議 EF5C • F95C.
885C 925C 箪 9C5C 粥 E65C 鱗 F05C.
FA5C ・895C n噂 935C 日占 9D5C 余 E75C 鐙 F15C
.
FB5C • 8A5C 浬 945C 古E
9E5C 初 E85C 鐸 F25C.
FC5C •P
e
r
l
には日本語対応のj
p
e
r
l
があるが,日本語モードにするとシフトJ
I
S
コードの1
バイトごとの操作がしにくくなり,P
e
r
l
で書いた文字コード変換ラ イブラリが使えなくなるので英語モードのままで使わなければならない。 (3)は次のような理由により発生する。英語版のデータベースではアルファ ベット順にレコードを並べ替える場合,大文字と小文字は同一視されるように なっている。シフト.
J
I
S
コードにそれが適用されると,コードの2
バイト自に アルファベットと同じコードが含まれるため,たとえデータがカタカナまたは ひらがなに限定されていても順序がおかしくなってしまう。これを避けるため には日本語で,かっその欄をコード順にソートする必要がある場合は, BINAR-Y指定をしておくことができる。これはMySQL3..21から用意された機能であ る。ただし,これを使うとアルファベットの大文字小文字が同一視されなくな るのでアルフアベットと日本語が混在する場合はやはり問題が生じる。今回作 成したアプリケーションは,最初は3
..20
れxx
で始めたので,名前の読みの順で ソートするところはローマ字にした。51 Webデータベースアプリケーションと開発環境 -51ー III Web Databaseアプリケーションの作成 3..1 ホームページの登録・検索アプリケーション 情報管理学科では,講義や演習の中で,学生にウェブページ作成の指導をし ている場合があるので,学生が自分のホームページを持っているケースが増加 している。そこで,それらのページを紹介できるようにしたいと考えた。しか し,学生の申し出を受けて担当者がいちいち HTMLファイノレに書き込んでい たのでは面倒だし,内容を簡単なキーワードで検索できるようにもしたい。そ こで,最初のアプリケーションとしてこれを作成してみることにした。 図3-1 ホームページの検索画面 (1) 本節で紹介する2つのアプリケーションは、香川大学経済学部情報管理学科の学科 サーバで公開している。 URLはhttp://is.ec.kagawa-uac. jp/。
52 接続するとまず図3-1のような画面になる。画面が変わっても操作ボタンが 常に表示されるようにフレームを使用した。 香川大学経済論叢 -52 ホームページの情報として表示す これら以 コメントの
5
項目にした。 ローマ字名,所属, URL, るのは,氏名, データベース内ではレコードIDと登録者のパスワードフィーノレドが用 外に, 意されている。氏名の読みをローマ字にしたのは,MySQLの最初に使ったパー ひらがなまたはカタカナで読みを入力し ジョンではBINARY指定ができず, その順序に表示させることが面倒だ、ったからである。 ても, それぞれ次のように機能する。 左側にある操作ボタンは, ボタンの機能 表3-1 官E すべてのレコードを表示する。表示はローマ字名順とする。 条件に合うレコードだけを表示する。すべてAND
による検索になる。 同一氏名のレコードがないことを確認して登録する。 まず該当するレコードを呼び出し、修正した後更新する。 まず該当するレコードを呼び出し、確認の上削除する。 フレームによる表示を止めてサーバのトップページに戻る。 機 ボタン名 覧 索 録 新 除 了 検 登 更 削 終 一人は一つのホームページしか登録できない 氏名はユニークであるとして, もっとも名前は自由に付けられるので,名前を変えれば一人で何 ものとした。 件でも登録できる。テストノTージョンでは誰でも自由に登録し,削除・修正も それではあまりにも無防備なので,登録者は登録時 できるようにしていたが, にパスワードを付けることにし,修正・削除はそのパスワードが一致する場合 だけ行うことにした。 操作ボタンでは更新と削除は別になっているが,実際にはまず同じ画面で更 新または削除するレコードを呼び出し,更新の場合はそれを適宜修正してから 「更ω新」する,削除の場合は内容はそのままにして「削除」するようにした。 両方ともその時点で登録時のパスワードを入力させるようになっている。 検索と登録は1回のコマンドで処理できるが,更新と削除では,まずユーザ が指定したレコードを見せておいて,ユーザからの確認を待ってから実際の処53 Webデータベースアプリケーションと開発環境 -53 理をしている。残念ながら
h
t
ゅではコマンドごとに接続が切れてしまうので, こういう処理をするには少し工夫が必要であるoc
o
o
k
i
e
を使うという手もある が,ユーザがc
o
o
k
i
e
を受け入れない場合も考えられるので,できれば使いたく ない。そこで前回の情報はフォームの隠しフィールドとしてブラウザ、側に一旦 返し,次にそれを利用することにした。 図3-2 ホームページデータの更新画面 このデータベースでは,氏名はユニークになっているが,更新するときに氏 名を頼りに更新すると,氏名が修正された場合は更新対象のレコードが見つか らなくなってしまうので,レコードIDに基づいて更新しなければならない。 次にMySQL
におけるデータベース作成の手順を紹介する。 サーバにt
e
l
n
e
t
で接続し,MySQL
のクライアントmysql
を起動する。以下, 次のように入力する。(1)
CREA
TE
DA
T
ABASE webdb ;
(
2
)
C
o
n
n
e
c
t
webdb ;
54- 香川大学経済論叢 54
(
4
)
hp i
d
INT AUTO INCREMENT
,(
5
)
na
ロl
e
V
ARCHAR (
5
0
)
NOT NULL
,(
6
)
r
o
m
a
J
l
V
ARCHAR (
5
0
)
INT NOT NULL
,(
7
)
shozoku V
ARCHAR (
5
0
)
INT NOT NULL
,(
8
)
u
r
l
V
ARCHAR (
1
0
0
)
i
d
INT NOT NULL
,(
9
)
comment V
ARCHAR (
2
5
5
)
, (10)password CHAR (
1
6
)
, (1l)PRIMARY KEY (
h
p
i
d
)
(12) ); (1) はデータベースwebdb
を作成する。 (2) はそのデータベースに接続している。 (3)~但) はhomepage
というTABLE
を定義し,作成している。 クライアント言語のmysql
は一つのコマンドを複数行に分けて入力でき,セ ミコロン(;)がコマンドの終わりになる。 パスワードはMySQL
で提供されているPASSWORD
関数を使って暗号化 する。古いパージョンでは8
桁の1
6
進数になっていたが,現在は1
6
桁になっ ている。3
.
.
2
CGI
スクリプトP
e
r
l
でCGI
を書く場合には,先に紹介したc
g
i
-
l
i
b..p
l
とj
c
o
d
e
.
.p
l
の他に,MySQL
付属のP
e
r
lAPI
を使う。したがってスクリプトの最初の部分は常に次 のようにしておけばよい。 非l
/
u
s
r
/
b
i
n
/
p
e
r
l
u
s
e
Mysql;
r
e
q
u
i
r
e
'
c
g
i
-
l
i
b..p
l' ;r
e
q
u
i
r
e
'
j
c
o
d
e
.
.
p
l' ;55 Webデータペースアプリケーションと開発環境
-55-c
g
i
-
l
i
b
引p
l
を使ってBrowser
からGET
ま た はPOST
で 渡 さ れ た パ ラメータは,次のようにして取り出す。
&ReadParse ;
$name
=
$
i
n
{"NAME"};
$
r
o
m
a
j
i
=
$
i
n
{"ROMAJI"} ;
まずReadParse
で処理すると,それらは連想配列としてi
n
に格納されるの で,それをi
n
から取り出せばよい。この例ではNAME
という名前の入力 フィールドの値が$name
に取り出されることになる。同じ名前で複数の値が ある場合は,ReadParse
は'¥0
'
で区切られた文字列にするので,Pe
r1ではs
p
l
i
t
関数を使えば簡単に分解できる。@array
s
p
l
i
t
(
/
¥
o
,/$
m
u
l
t
i
s
t
r
i
n
g
)
;
次いで日本語のフィーノレドであればj
c
o
d
e
.
.p
l
のライブラリでシフトJ
I
S
コードに変換しておく。&
j
c
o
d
e
'
c
o
n
v
e
r
t
(
*name
,"
s
j
i
s
"
)
;
&
j
c
o
d
e
'
c
o
n
v
e
r
t
(* comment
,"
s
j
i
s
"
)
;
次にMySQL
に問い合わせるためのSQL
文を作成し,日本語の文字化けを 防ぐ前処理をする。$
s
q
l
&
j
p
r
e
p
(
$
s
q
l
)
;
あとはSQL
を発行し,結果を取り出し,クライアントにHTML
ファイノレとし て返してやればよい。56 香川大学経済論叢 56
3
.
.
3
P
e
r
l
からMySQL
を使うためのAPI
MySQL
のP
e
r
lAPI
はこれまではMysqlAPI
が使われていたが,新しいマ ニュアノレにはこのAPI
の記述がなくなっており,代わりにD
B
I
[
2
8
]
を使うよう に推奨されている。このアプリケーションは,実はすべて古いAPI
で作成して しまっていたので,ここではまずMysqlAPI
を説明し,参考までに新しいDBI
API
も説明することにする。*
Mysql API
によるデータベースへの接続 (1)u
s
e
Mysql;
(2)$dbh
=Mysql->Connect(
ホスト名,データベース名)(
3
)
$
s
t
h
=
$dbh
ー >Query(SQL
文) (4)w
h
i
l
e
(
@
r
e
c
o
r
d
=$
s
t
h
一>FetchRow)
(5)p
r
i
n
t
"@record
¥n" ;
(6) これを使用可能にするには,あらかじめu
s
e
文でこのライブラリを使うことを 宣言しておく(1)。 (2)でデータベースに接続する。今はWeb
のCGI
スクリプトの中で実行しよう としているので,ホスト名は"
l
o
c
a
l
h
o
s
t
"
でよい。データベース名は"webdb"
で ある。データベースのアクセス権の設定により,この場合はユーザ名とパスワー ドは不要である。接続が成功するとデータベースハンドノレが返される。(
3
)
でSQL
文を実行する。 (4),,-,(
6
)
で結果を取り出している。SQL
がSELECT
文のときは,上のようにQuery
でSQL
を実行してから,レコードをFetchRow
で取り出す。INSERT
やUPDATE
など,非SELECT
文のときはFetchRow
を使う必要はない。な お,接続したデータベースを閉じるC
l
o
s
e
に当たるメソッドは必要がないので 用意されていない。57 Webデータベースアプリケーションと開発環境 次に最新のマニュアノレで推奨されている
DBIAPI
を使う場合を示す。 (1)u
s
e
DBI;
(SELECT
文の場合)(
2
)
$dbh
=DBI->
c
o
n
n
e
c
t
(
"
D
B
I
:
m
y
s
q
l
:
データベース名")(
3
)
$
s
t
h
=
$
d
b
h
->
p
r
e
p
a
r
e
(SQL
文);(
4
)
$
r
c
=$
s
t
h
ー>execute;
(
5
)
w
h
i
l
e
(
@
r
e
c
o
r
d
=$sth->fetchrow a
r
r
a
y
)
(
6
)
p
r
i
n
t
"
$
r
e
c
o
r
d
¥n" ;
(7)(
8
)
$
r
c
=$
s
t
h
->
f
i
n
i
s
h
;
(
9
)
$
r
c
=$
d
b
h
-
>
d
i
s
c
o
n
n
e
c
t
;
(SELECT
文でない場合) ( 10
)
$dbh
=DBI-> c
o
n
n
e
c
t
(
"
D
B
I
:
m
y
s
q
l
:
データベース名") (11)$
d
b
h
->
do (SQL
文) ( 12)$dbh
・->
d
i
s
c
o
n
n
e
c
t
;
57-DBI
を使う利点は他のデータベースシステムに接続する場合と同じ手順が 使えるようになることである。P
e
r
l
のサイトには多くのデータベースに対するDBI
モジューlレが掲載されている。 3..4 演習室利用予約・表示アプリケーション 情報管理学科にある端末室・ゼミ室の利用予約とその予約状況を表示できる ようにした。これは部屋もデータベースに登録しているので,簡単に部屋を増 やしたり,名前を変更したりできるように考慮してはあるが,部屋はとりあえ ず4
つに固定した。利用登録できるユーザは別途管理者がデータベースに登録 するものとする。予約は香川大学の授業時間単位にする。登録は毎日,毎週の 登録が簡単に行えるように工夫した。58 香川大学経済論叢 58
図 3-3 演習室利用予定の検索
59 Webデータベースアプリケーションと開発環境 59-作成したテーブノレを表
3-2
に示す。 表3-2 テープJレの構造 部屋名表 roomna町le 予約表 roomresrv 項目名 データ型 100m id INT 項目名 データ型 room V ARCHAR(20) 1S id INT 1S date DATE 利用者表 roomuser room id INT period INT 項目名 データ型 user id INT user id INT user V ARCHAR (20) password V ARCHAR (16) 図3-5 演習室利用予約画面-60ー 香川大学経済論叢 60 以下,各操作ボタンの機能について説明する。
*
検索 何も設定せずに実行すると,すべての部屋について,当日から1
週間分の 予約状況を表示するようにした(図3-4
)
。*
予約1
利用者ごとにパスワードを付けて予約させるようにした。 1度の予約で,複数の部屋,複数の時限が指定でき,期間は毎日,毎週, 毎月の繰返しができる。*
取り消し 予約とほぽ同様の指定で行える。実際に取り消す前に対象の予約を表示し, 確認の上,取り消すときはパスワードを入力させて取り消すようにした。*
パスワードの変更 利用者ごとのパスワードを変更する。*
カレンダーの表示 予約のためにカレンダーを確認した いことがあるだろうと考えて, Java -Scriptでカレンダーを表示できるよ うにした。フレームを使って上側に年 月とボタンを表示し,下側のフレーム に曜日と日の表を表示するようにした が,ブラウザによって動作が異なった。 結局Netscape3.. x, 4. x,インターネッ 図3-6 JavaScriptによるカレンダー トエクスプローラ4
.
.
Xでは何とかできたが,I
E
3
“xではうまく行かなかっ た。 予約・表示できる部屋をデータベースに登録しであるものをそのまま使うよ うにするためには最初に表示するファイルを静的なh
t
m
l
ファイルにせず、に, SSIかCGIを使うようにすればよい。ただ,部屋の数が多くなると部屋名を整 理して表示するのが面倒になる。仮にテーブルのセルに適当に書き出してしま61 Webデータベースアプリケーションと開発環境 61ー うと図3-7のようになって乱れてしまう。利用者がどのような環境で表示して いるかわからないときちんと表示することは難しい。 図 3-7 予約できる部屋をデータベースから取り出して適当に表示した場合
I
V
Windows 9
5
におけるWebD
a
t
a
b
a
s
e
環境 ここまではPC-UNIX
の上での話であったが,実際にシステムを試作,開発 するためにいつも公開中のサーバ上で行うわけにも行かず,また,個人的には 自宅でも作業しなければならないという事情もある。通常使用しているWin-dows 9
5
マシン上でアプリケーション開発ができれば便利である。そこでここ では,Windows95
上で同様なWebD
a
t
a
b
a
s
e
環境を構築するのに必要な情報 について述べる。個人で小規模なWebD
a
t
a
b
a
s
e
アプリケーションを作ってみ たいと考えている人にも参考になるであろう[鈎叫] (2 ) データベースはマイクロソフト社のA
c
c
e
s
s9
7
を用いることにする。実際はODBC
ドライパのあるデータベースなら何でもよい。Web
サーバはいくつか 考えられるが,まずはマイクロソフト社の製品でASP
が利用できる環境を考えてみた。
Windows9
5
で利用できるWebS
e
r
v
e
r
はP
e
r
s
o
n
a
lWeb
S
e
r
v
e
r
と(2) ASPをインストー1レするとOLEDBがインストーJレされるので、 ASPでデータベー スを使うだけなら
A
c
c
e
s
s9
7
はなくてもよい。62 香川大学経済論議ー 62
FrontPage Web Serverがある。このうち Fron
t
P
ageWeb Serverはデータベースと接続するためのダイナミック HTMLの機能をもっていない。した がって{吏えるのはPersonalWeb Serverだけとなる。 表4-1 ASPに必要なもの Personal Web Server ASP Access 97 これだけあればマイクロソフト社が推進している ActiveServer Pagesの機 能を試すことができる。 WindowsNT WorkstationであればPersonal Web Serverではなく PeerWeb Serverが利用できる。
4“1 Personal Web Server
Personal Web Server (PWS)にはWebServerとFTPServerの機能が含 まれている。 WebServerとしては小規模ながら CGI,IDC, ASPを利用する ことができる。 SSIについては残念ながら非include機 能 だ け し か 利 用 で き ない。 PWSはWindows95の追加モジュールとして以下のサイトからダウンロー ドできる他,マイクロソフト社のインターネット関連ツールのソフトウェア CD-ROMにも含まれている。 表4-2 PWSの入手先 http://www microsoft com/japan/win 95/modules/pcatnew htm Microsoft Visual InterDevLO FrontPage 98 (3) SSIの他の機能も使いたければOmniHTTPd[お]など、 SSIに対応したサーバを利用 するしかない。 WindowsNTのPeerWeb ServerはSSIに対応している[34]。
63 Webデータベースアプリケーションと開発環境 -63-インストールしてからマシンを再起動すると
PWS
が自動的に起動し,タスク トレイにアイコンが表示される。これをダブルクリックするか,右クリックす ることにより各種の設定ができる。PWS
は常に使うようなものではないので, 起動は手動にしておくことが多いと思われるが,その時はコントロールパネル のパーソナルWeb
サーバーアイコンから起動できる。ただ し,実際にN
e
t
s
c
a
p
e
等のブラウザ、からアクセスするには ネットワーク設定を適切に行わなければならない。4
.
.
2
ネットワーク設定寵
図4-1 PWS 実際にネットワークに接続していないパソコンの場合でもネットワークの設 定をしなければならない。通常のHTML
ファイルならWeb
サーバを使わず、に ローカルファイルを直接表示できるが,ダイナミックなHTML
はサーバ経由 で表示する必要があるので,Web
ブラウザ、がサーバにアクセスできるようにし なければならない。 色々な環境が想定されるが,ここではLAN
接続していないパソコンを想定す る。その場合,次の2
つのドライパは必須である。*
夕、イアルアップアダプタ*
TCPjIP
プロトコル 設定はコントロールパネルのネットワークで行う。 ユーザ情報には適当にコンピュータ名とワークグループを設定しておく。 ブラウザ、からはこのコンピュータ名で接続することにする。 アクセス権の管理は共有レベルのアクセス管理にしておく。TCPjIP
プロパティのI
P
アドレスは何か設定しておく。どこにもつないでい ないので何でもよいのだ、が,自由に使用できる192..168.Lxx
がよいだろう。xx
は1
~254 の聞で適当に決めればよい。その他は特に変更する必要はない。 夕、イアルアップでプロパイダに接続する場合は,このI
P
アドレスはr
I
P
アド-64ー 香川大学経済論叢 64 レスを自動的に取得」にしておかないとうまく接続できなくなるので注意が必 要だ。その度に設定を変更するのがいやな場合は, IPアドレスを付けないで localhostとして接続すれば接続できないことはないが,名前で接続した方がよ いだろう。その場合はhostsファイノレを用意する。 windowsディレクトリの中 に hosts..samというサンプルがあるので,それをhostsにコピーし, localhost の次にIPアドレスとホスト名(コンピュータ名)を追加する。 もし LANアダプタがあるなら, IPアドレスはそのアダプタに付けておけば よいのでト便利である。夕、イアルアップアダプタのIPアドレスは自動的に取得 するにしておけばよい。この設定で,もしODBCドライパがすでにインストー ノレしであれば, IDCjHTXによるダイナミック HTMLを使用することができ るが, ODBCドライパなどのパージョンが違っていたりするとうまくデータ ベースに接続できなかったりするので,ここでASPもインストールしてしま うことにする。 4..3 Active Server Pages これを利用するためには,ASPパッケージをインストーノレする必要がある。 これも MicrosoftのWebsiteからダウンロードできるが,ファイルが 7MB 近くあるので, CD-ROMを用意したほうがよい。 表4-2 ASPの入手先 http://www. microsoft com/japan/products/iis/download/ Microsoft InterDev その他、雑誌付録のCD-ROM ASPをインストーノレすると, ODBC3.0 (AccessとSQLServerドライノてを 含む)ADOおよびOLEDB,オンラインマニュアlレおよびサンプルページコ レクションがインストーノレされる。 PWSを起動してブラウザでアクセスする とASPサンプノレを見ることができる。 PWSとODBCに関連しては,いくつかのトラブルが発生するかもしれな
65 Webデータベースアプリケーションと開発環境 65 い。ライブラリモジュー1レのパージョンが違っていたりするとうまく行かない ことがある。他のソフトウェアをインストーノレしたことによりエラーが発生す るようになる場合もある。筆者の環境では
ODBC32
を聞いて閉じただけで次 のようなエラーが発生する。実害はないようなのだが気持ちが悪い。 図4-2 ODBC32を閉じるときのエラー システムを元に戻し,一つずつソフトウェアを再インストールして行ったら,N
e
t
s
c
a
p
e
Communicator
をインストーノレしたところでこのエラーが再現し た。しかたなくN
e
t
s
c
a
p
e
をインストールしないで使っていたが,いつのまにか またこのエラーが出るようになっていた。どうせエラーが出るのならとN
e
t
s
-c
a
p
e
も再導入したそのパソコンで本稿で紹介したアプリケーションを開発し ている。4
..4P
e
r
l
f
o
r
羽T
i
n3
2
CGI
をP
e
r
l
で書きたいならP
e
r
l f
o
r
Win 3
2
をインストーノレする。実はPWS
はこれを使わずにISAPI
からP
e
r
l
を実行するP
e
r
l
i
s
.
.d
l
l
があればよい のだが,コマンドからP
e
r
l
を実行したいときもあるので,これもインストール した方がよい。その他P
e
r
l
関連ではASP
でP
e
r
l
S
c
r
i
p
t
を使うためのモジュー66 香川大学経済論叢 66 ル, PerlからODBCドライパにアクセスするためのモジコールもインストー ルする。 表4-3 導入するPerl関漣モジュール Perl for Win 32 PW 32 i 316. exe Perlis dll PIISi 316.. exe PerlScript PlSEi 316 exe Perl ODBC 羽Tin32 odbc v 970208 zip これらのファイルは Perlのホームページまたはミラーサイトに掲載されて いる
P
なお, Perl Win3
2
odbcは展開した後,安定版ではなく, beta版の方を 使うようにする。安定版ではエラーが出て使えなかった。 4..5 Windows 95におけるWebDatabaseアプリケーションの開発 PWSを利用してWebDatabaseアプリケーションを作成する手法として は, IDC, ASP, CGIを使う 3つが考えられる。このうち IDCとASPはともにマイクロソフト社が開発したものである。 IDCによる方法は簡単ではある が,機能が乏しく適用範囲が限定される。同社も現在はASPを推進しているの で,まずASPから検討してみる。 ASPを 使 う 場 合 は ス ク リ プ ト 言 語 を 選 択 で き る 。 Visual Basic風 の VBScriptが標準であるが, ASPパッケージには]avaScriptを処理する機能 が含まれており,そのままで]avaScriptが使用可能である。ただし,マイクロ ソフト社はJScriptと呼んでいる。更にPerlScriptのためのモジューノレを追加 したので,ここではPerlScr均tも利用できる。 4..5 1 ASPのスクリプト
・
主要スクリプト言語の指定 ASPファイルの先頭に次のように指定する。67 Webデータベースアプリケ}ションと開発環境 -67-ー
<%
@LANGUAGE
=スクリプト言語名%> スクリプト言語名は,VBScrit
,J
S
c
r
i
p
t
,P
e
r
l
S
c
r
i
p
t
の一つを指定する。デ フォルトはV
B
S
c
r
i
p
t
である。指定したスクリプトの文はASP
ファイルの中 で区切り記号<%と%>で囲んで記述する。この中では主要言語だけが使え る。手続きを定義する場合はくSCRIPT>
タグを使う。主要言語ならく%%>
の中でも定義できるが,作法としてはしない方がよい。 くSCRIPTLANGUAGE=
スクリプト言語名RUNA
T
=
S
e
r
v
e
r
>
くjSCRIPT>
このタグの中では独立に言語を指定できるので,異なる種類の言語の手続き を混在させることができる。これを置く場所はくHTML>
の前か,くjHTML>
の後が無難である。•
Browser
への出力ASP
は基本的にHTML
ファイルであるので,通常の記述はそのままブラウ ザに送出される。 サーバ側で処理した変数の内容を出力するときは<%
=変数名%> の形でHTML
テキストの中に埋め込めば,変数の内容が送出される。スクリプ トの中で直接出力するときは,R
e
s
p
o
n
s
e
オブ、ジ、ェクトのWrite
メソッドを使う ことができる。R
e
s
p
o
n
s
e
W
r
i
t
e
変数68ー 香川大学経済論叢 68
•
Browser
からの情報を取り出すブラウザから
GET
で送られた情報は,R
e
q
u
e
s
t
オブジェクトのQ
u
e
r
y
S
t
r
-i
n
g
コレクションで,POST
で送られたものはForm
コレクションで受け取ることができる。
usemame
=Request Q
u
e
r
y
S
t
r
i
n
g
("N AME")
usemame
=
Reques
t
.
Form("NAME")
•
ADO
からデータベースにアクセスする。VBScTIpt
からの基本的な使い方を示す。 (1)S
e
t
db
=
Server C
r
e
a
t
e
O
b
j
e
c
t
("ADOD
B
.
.
C
o
n
n
e
c
t
i
o
n
"
)
(
2
)
d
b
.
.Open
データベース名(
3
)
S
e
t
1S=
S
e
r
v
e
r
C
r
e
a
t
e
O
b
j
e
c
t
(
"
ADODB
“R
e
c
o
r
d
s
e
t
"
)
(
4
)
r
s
.
.
Open SQL
,db
,3
,3
(
5
)
do w
h
i
l
e
n
o
t
r
s
.
.
e
o
f
(
6
)
R
e
s
p
o
n
s
e
.
W
r
i
t
e
r
s
.
.
F
i
e
l
d
s
("フィールド名")などで書き出す (7)r
s
,.MoveN
e
x
t
(
8
)
l
o
o
p
(
9
)
r
s
.
.
C
l
o
s
e
(
1
0
)
dh C
l
o
s
e
(1)はADOD
B
.
.c
o
n
n
e
c
t
i
o
n
オブジェクトを作成する。(
2
)
はデータベースをオープンする。データベース名はODBC
データソース名で ある。(
3
)
はSQL
文の結果を取り出すためのADODBR
e
c
o
r
d
s
e
t
オブジェクトを作 成する。(
4
)
はSQL
で与えられたSQL
文を実行し,結果をレコードセットに設定する。(
i
i
69 Webデータベースアプリケーションと開発環境 -6 9-(5)~(8) はレコードセット内の全レコードを順に処理している。(
7
)
は次のレコードへ進む。 (9), (10)はレコードセットとコネクションをクローズする。SQL
を実行するにはE
x
e
c
u
t
e
メソッドを使って次のようにすることもでき る。S
e
t
r
s
=
d
h
.
E
x
e
c
u
t
e
(
S
Q
L
)
ただし,実際にこれを使ったところ,返されたレコード件数を取り出すr
s
.
.
RecordCount
がO
か-1
にセットされるだけで,正確な件数が取り出せな かった。先にレコードセットオブジェクトを作成しておく方法では正確な件数 が取り出せる。4
.
.
5
.
.
2
ASP
スクリプト言語の違いVBScript
による書き方はASP
付属のオンラインマニュアノレに詳しく記述 があり,文献[ぬ]もあるが,J
S
c
r
i
p
t
とP
e
r
l
S
c
r
i
p
t
からActiveX
コンポーネント を使う方法については記述がなく,文献も少ない。P
e
r
l
S
c
r
i
p
t
では配布パッ ケージにサンプノレが付いているだけで言語仕様の記述すら見つからなかった。•
VBScript
すべて大文字と小文字の区別はない。 メソッドや手続きを呼び出すときに括弧が必要な場合とそうでない場合があっ て混乱する。•
J
S
c
r
i
p
t
オブジェクト名は大文字小文字が区別されるが,メソッド,プロパティはどち らでもよい。 メソッド/手続きの呼び出しは( )が必要である。 プロパティのときはもちろ-70ー 香川大学経済論叢 70 ん括弧を付けてはいけない。以下,
0
は正常に動作することを,x
はエラーまた は異常な動作をすることを表す。o
v
a
r
db
=
Se
町r
v
e
ぽr
ι
C
r
e
a
t
旬eOb
同
j
e
c
t("ADODB" C
o
n
n
e
c
t
i
ω
o
がn
1"o
v
a
r
r
陀s
=
Se
釘r
v
e
r..CreateOb
同
l
Ie
c
t(
"
ADOD
B
.
R
e
c
o
r
d
s
e
t
"
o
d
,.bo
p
e
n
(
"
w
e
油bdb
勺o
d
,.bOpen (
"
w
e
b
d
b
"
)
o
R
e
s
p
o
n
s
e
"
Write (
)
o
R
e
s
p
o
n
s
e
"
w
r
i
t
e
(
)
Xr
e
s
p
o
n
s
e
"
Write (
)
o
r
s
“MoveNext (
)
Xr
s
"
MoveN
e
x
t
o
rs"EOF
o
r
s
"
e
o
f
Xr
s
"
EOF (
)
•
Pe
r
1S
c
r
i
p
t
オブジェクト名にはS
を{寸ける。 オブジェクト内の要素を参照する場合は一>を使う。 オブジェクト名は大文字小文字の別があるが,メソッド,プロパティは区別が ない。 メソッドプロパティ共に最後の()は付けても付けなくてもよい。$
R
e
q
u
e
s
t
->
Form (
)の後に'一>I
t
em'
が必要である。付けないと何か違うも のが返される。o
$db
=
$
S
e
r
v
e
r
->
C
r
e
a
t
e
O
b
j
e
c
t
("ADOD
B
.
C
o
n
n
e
c
t
i
o
n
"
)
;
x $db
=
$
s
e
r
v
e
r
->
C
r
e
a
t
e
O
b
j
e
c
t
(
"
ADODB C
o
n
n
e
c
t
i
o
n
"
)
;
o
$db->Open (
"
w
e
b
d
b
"
)
;
71 Webデータベースアプリケーションと開発環境 -71ー
o
$
r
s
=$
S
e
r
v
e
r
->
C
r
e
a
t
e
O
b
j
e
c
t
(
"
ADOD
B.R
e
c
o
r
d
s
e
t
"
)
;
o
$
r
s
->Open (
$
s
q
l
,$db
,3
,3
)
;
o
$
r
s
-
.
>
MoveNext ;
o
$rs->MoveNext (
)
;
o
$
r
s
一>movenext;
o
$rs->EOF
o
$
r
s
->EOF (
)
X$Request->Form ("NAME");
o
$
R
e
q
u
e
s
t
->
Form ("NAME
勺>ltem;
4
.
.
5
.
.
3
CGI
ここでは
P
e
r
l
とP
e
r
l
のODBC
ドライパを使う例を紹介する。UNIX
でMySQL
に接続する場合と違うのは,ODBC
ドライパを使うところ と,MySQL
とA
c
c
e
s
s
のSQL
が違うところである。u
s
e
Win 3
2
:
:
ODBC;
$db
=new Win32 :
:
ODBC (
$
d
b
n
a
m
e
)
$
d
b
->
S
q
l
(
S
Q
L
)
;
w
h
i
l
e
(
$
d
b
-
>
FetchRow (
)
)
@rec
=
$
d
b
->
Data ;
p
r
i
n
t
"@rec
¥n"
$db
ー>RowCount (
)
;
$
d
b
->
C
l
o
s
e
(
)
;
-72- 香川大学経済論叢 次に
MySQL
とA
c
c
e
s
s
のSQL
の違いをまとめておく0・
数値の指定 72MySQL
では数値を引用符で囲んでも閉まなくてもよいが,A
c
c
e
s
s
では引用符 で閤んではいけない。room i
d
=
'
2
' MySQL
は0
,
A
c
c
e
s
s
は×room id=
2MySQL
,A
c
c
e
s
s
ともにO
- 日付の指定
MySQL
はr
s
d
a
t
e
='
1
9
9
8
-
0
4
-
0
1'のように指定するが,A
c
c
e
s
s
ではr
s
d
a
t
e
=
非1
9
9
8
-
0
4
-
0
1
非のように指定する。r
s
d
a
t
e
=
'
1
9
9
8
-
0
4
-
0
1' 乱1ySQL
のときr
s
d
a
t
e
=
非1
9
9
8
-
0
4
-
0
1
非A
c
c
e
s
s
のとき•
d
a
t
e
型MySQL
には日付時刻に関するデータ型としてDA
TE
,TIME
,DATETIME
があれそれぞれ保持するデータが異なっている。一方
A
c
c
e
s
s
はデータ型とし ては日付/時刻型一つだけで,表示するときに様々な形式を指定することができ る。MySQL
でDATE
型項目からデータを取り出すとyyyy-mm-dd
となるが,A
c
c
e
s
s
の日付/時刻型では,それに日付だけをセットしてから取り出すとyyyy
-mm-dd 0
0
:
0
0
:
0
0
になる。4
.
.
5
“4 Windows 9
5
でのPC-UNIX
アプリケーションの開発スタンドアロンの
Windows95
でPC-UNIX
環境のアプリケーションを開 発するために作成したものである。P
e
r
l
自体は同じなので,違うところは73 Webデータベースアプリケーションと開発環境 -73-ために新しい手続きを作ることにした。作成した手続きは次の5つである。 DBOpenO DBQueryO DBFetchO DBRowCountO DBCloseO どちらのインターフェイスを使うかは変数$mysqlにOか1を設定して選ぶ ことにした。use文は次の2つを使い分けなければならないが,これは条件文で 判定してどちらかを実行するという訳には行かなかったので,どちらか一方を コメントにすることにした。 書use恥lysql; use Win 32 :: ODBC; 本稿の演習室予約アプリケーションはこのライブラリを使って自宅のノート パソコンで開発したものである。プログラムリストは付録