|
ここでは、Linux の Web アプリケーションから Pervasive PSQL データにアクセスするための Web サーバーの構成情報、また、その Pervasive PSQL データに接続するための接続用コードの抜粋やサンプル コードを提供します。
Pervasive PSQL を最初にインストールしたとき、odbc.ini ファイル は /usr/local/psql/etc に書き込まれます。
unixODBC などの別の ODBC ドライバー マネージャーがあった場合、これらのドライバー マネージャーは /etc/odbc.ini といった別の場所にある odbc.ini を使用している可能性があります。
ODBC セットアップを統一するには、unixODBC が使用する odbc.ini ファイルのロケーションのソフト リンクを Pervasive PSQL ディレクトリに追加するという方法があります。
ここでは、Apache などの Web サーバーが搭載されているマシンを設定する方法について説明します。
Apache などの Web サーバーを起動するユーザー アカウントは pvsw
グループのメンバーに属していなければなりません。これらのユーザー アカウントは nobody などの制限付きアカウントに基づいて実行します。
ユーザー アカウントを探す場合は Apache 構成ファイルを見てください。これは通常 /etc/httpd/conf/httpd.conf
にあります。
このファイルの以下の行では、Apache サーバーを使用して操作するユーザーを示します。
このユーザーを pvsw
グループに追加し、お使いの Apache 構成ファイルで使用している名前に置き換えます。
/usr/bin/gpasswd -a nobody pvsw
PHP では Microsoft の ASP や Java の JSP に類似したスタイルを使用して Web アプリケーションの開発を簡単に行うことができます。PHP の使用は HTML でデータベース呼び出しを特殊なタグで囲み、出力を書式設定します。
このコード部分は PHP を使って Pervasive PSQL データベースに接続する基本的な部分です。
// ユーザー ID、パスワードなしで DEMODATA データベースに接続する $connect = odbc_connect("demodata", "", ""); // クエリ変数を SQL に設定する $query = "SELECT * from Department"; // クエリの結果オブジェクトを取得する $result = odbc_exec($connect, $query);
以下に示す完全なサンプルでは、ユーザーが DEMODATA の 3 つのテーブルから 1 つを選択し、そのテーブルを表示します。
<HTML> <HEAD> <TITLE>PVSW PHP サンプル</TITLE> </HEAD> <BODY> <H1>Pervasive Hello World サンプル - PHP ODBC API を使用した PHP)</H1> <P> このサンプルでは PHP を使用して下記のドロップダウン リストにある DEMODATA データベースのテー ブルを表示します。 </p> <? // -------メイン メニュー----------------------- // URL 内に指定された機能がない場合 if (!(isset ($HTTP_GET_VARS["_function"]))): // -------------------------------------------- ?> <p>以下のテーブルから選択してください。</p> <form method=post action='<?=$PHP_SELF?>?_function=showtable'> <select name="selecttable"> <option SELECTED value="Department">Department <option value="Course">Course <option value="Room">Room </select> <p> <input type=submit value="テーブルの表示"> </p> </form> <? // ------テーブルの表示------------------------- Elseif ($HTTP_GET_VARS["_function"] == "showtable"): // -------------------------------------------- print("<p><a href='$PHP_SELF'>サンプル 1 メイン メニュー</a>に戻る</p>"); $thetable = $HTTP_POST_VARS["selecttable"]; // フォームのデータから開くテーブルを決定する $connect = odbc_connect("demodata", "", ""); // ユーザー ID、パスワードなしで DEMODATA データベースに接続する $query = "SELECT * from $thetable"; // 実行する SQL に含めるクエリ変数を設定する $result = odbc_exec($connect, $query); // クエリを実行する // 結果セット全体を HTML テーブルとして出力する //(以下の行のコメントを解除します) // odbc_result_all($result); // あるいは、出力を自分で独自に書式設定し、 // より見やすいテーブルを表示する(ただし、より多くのコード作成が必要) // 行カウンターを初期化する $i = 0; // 列数を決定する $numcols = odbc_num_fields($result); // HTML テーブルを開始する print("<table border=1 cellpadding=5>"); // 列見出しの印刷 print("<tr>"); // 行の開始 while ($i < $numcols) { $i++; $colname = odbc_field_name($result, $i); print("<th>$colname</th>"); } $i=0; print("</tr>"); // 行の終了 // テーブル データの出力 // 行が存在する限り実行 while(odbc_fetch_row($result)) { print("<tr>"); // 行の開始 while ($i < $numcols) { $i++; $tablecell = odbc_result($result, $i); print("<td>$tablecell</td>"); } print("</tr>"); // 行の終了 $i = 0; // カウンターのリセット } // odbc フェッチ行の終了 print("</table>"); // HTML テーブルの終了 odbc_close($connect); // 接続を閉じる // テーブル表示の終了 // ---無効なメニュー オプションの取得---------------- Else: // ---------------------------------------------- print("<p>無効な機能が入力されました。<a href='$PHP_SELF'>再試行</a>してください。</ p>"); Endif; ?> </BODY> </HTML>
より一般的な PHP サンプル アプリケーションが Pervasive Software の Web サイトからオンラインで入手することができます。このアプリケーションではビデオ店の操作をシミュレートします。
このサンプルは Pervasive PSQL SDK に含まれている Pvideo データベースを使用しています。SDK をインストールしていない場合は、サンプル アプリケーションと一緒にこの Pvideo データベースをダウンロードすることができます。
Perl は Pervasive PSQL を使ったコマンド ラインおよび Web ベースのアプリケーションの両方に使用できます。
このコード部分は Perl を使って Pervasive PSQL データベースに接続する基本的な部分です。
# Perl のデータベース インターフェイス(DBI)の使用を指定する use DBI; # ユーザー ID、パスワードなしで DEMODATA データベースに接続する $dbInfo = "DBI:ODBC:DEMODATA"; $dbUserName = ""; $dbPassword = ""; # クエリ変数を SQL に設定する $query = "SELECT * FROM Department"; # サーバーへ接続する $connect = DBI->connect($dbInfo, $dbUserName, $dbPassword); # SQL クエリを準備する $myRecordSet = $connect->prepare($query); # クエリを実行してレコードセットを取得する $myRecordSet->execute();
以下に示す完全なサンプルでは、ユーザーが DEMODATA の 3 つのテーブルから 1 つを選択し、そのテーブルを表示します。
# Perl のサンプル use CGI":cgi-lib"; $cgiquery = new CGI; $functionreq = $cgiquery->url_param('_function'); # GET の場合は 'url_param' を、POST の場合は 'param' を使用する print &PrintHeader; print &HtmlTop("Pervasive PSQL Hello World サンプル - Perl"); print <<ENDOFMENU; <H1>Pervasive Hello World サンプル - Perl</H1> <P> このサンプルでは Perl/DBI を使用して下記のドロップダウン リストにある DEMODATA データベー スのテーブルを表示します。 </p> ENDOFMENU # -----メイン メニュー------------------------------- # URL 内に指定された機能がない場合 if (!$functionreq) { # ------------------------------------------------- print <<ENDOFTEXT; <p>以下のテーブルから選択してください。</p> <form method=post action="$ENV{'SCRIPT_NAME'}?_function=showtable"> <select name="selecttable"> <option SELECTED value="Department">Department <option value="Course">Course <option value="Room">Room </select> <p> <input type=submit value="テーブルの表示"> </p> </form> ENDOFTEXT } # !($function) # ------テーブル表示------------------------------- elsif ($functionreq eq "showtable") { print("<p>Return to <a href='$ENV{'SCRIPT_NAME'}'>Perl Hello World サンプル - メ イン メニュー</a><に戻る/p>"); # フォームのデータから開くテーブルを決定する $thetable = $cgiquery->param('selecttable'); use DBI; $dbInfo = "DBI:ODBC:DEMODATA"; $dbUserName = ""; $dbPassword = ""; $query = "SELECT * FROM $thetable"; $connect = DBI->connect($dbInfo, $dbUserName, $dbPassword); $myRecordSet = $connect->prepare($query); $myRecordSet->execute(); # HTML テーブルを開始する print "<table border=1 cellpadding=5>"; # 列見出しの印刷 $num_fields = $myRecordSet->{NUM_OF_FIELDS}; $count = 0; print "<tr >"; while ($count < $num_fields) { $column_name = $myRecordSet->{NAME}->[$count]; print "<th>$column_name</th>"; $count++; } print "</tr>¥n"; $count = 0; # テーブル データの出力 while(@row=$myRecordSet->fetchrow_array) { print "<tr>¥n"; while ($count < $num_fields) { print "<td>$row[$count]</td>¥n"; $count++; } print "</tr>¥n"; $count = 0; } print "</table>"; # HTML テーブルの終了 # テーブル表示の終了 } # -----無効なメニュー オプションの取得---------------- else { print "<p>無効な機能が入力されました。<a href='$ENV{'SCRIPT_NAME'}'>再試行</a>して ください。</p>"; } print &HtmlBot;
|