| 1. SAJIRO DATABASEの著作権は作成者に帰属します。
2. データの中身に対して当方は責任を負いかねます。
3. データのバックアップは個人の責任で行ってください。
|
| access関数がデータベースから、条件付きの抽出、グループピング、ソート、追加、削除、更新が一括でできます。
関数連結機能とフリーフォーマットインターフェースにより、データの一括変換、一括修正、多彩な抽出方式が可能になります。
insert deleteなどのデータベース更新コマンドで自動的に排他制御を行います。いままで面倒だったファイルのロックが必要ありません。
すべてのwwwサーバー(perl5含む)で稼動します。(すると思います.^ ^)
サンプルのプログラムは、ミニチャット、ミニBBS、ミニサーチエンジンをご覧ください。
|
| ファイル名 内容
1 lib/sajidb.pl SAJIRO DATABASEプログラム
2 readme.htm READMEファイル
3 sample/bbs.cgi ミニ掲示板
4 sample/chat.cgi ミニチャット
5 sample/serche.cgi ミニサーチエンジン
6 sample/test.cgi 動作確認スクリプト
7 data データ出力フォルダ
8 data/index.htm 一覧表示防止用
|
| public_html / index.html (ホームページなど)
|
+-- cgi-bin / readme.htm
|
+-- lib / sajidb.pl
|
+-- sample / searche.cgi [705 or 775]
| bbs.cgi [705 or 775]
| chat.cgi [705 or 775]
| test.cgi [705 or 775]
|
+-- data / [707 or 777]
# cgi-bin/sample/data/ フォルダは必ず作成し、パーミッション[707]を設定してください。
# 設置方法に付きましては、ご使用のサーバー管理者にお問い合わせください
|
| sajidb.plの以下の部分を変更して下さい。ほとんどの場合、変更の必要性はありません
# Config
$d_timeout=60 * 10; # ロックタイムアウトの秒数
$d_DEBUG="FALSE"; # TRUE or FALSE(デバッグ情報の出力)
$d_doc="cgi"; # データファイルの拡張子
$d_data="data"; # デフォルトのデータパス
$d_timeout ロックの最長時間を指定します。長時間データをロックする場合は変更してください。デフォルトは1分です。
$d_DEBUG デバック情報を表示の設定です。表示する場合は「TRUE」を設定してください
$d_doc データファイルの拡張子です。通常は変更しないでください
$d_data デフォルトのデータパスです。通常は変更しないでください
(※ サンプルプログラムを動かす場合は変更しないで下さい)
|
| SAJIRO DATABASEはPerlで作成された、テキストベースのデータベースです。
以下に登録データ形式のフォーマットを記載します。
01<>項目1a<>項目1b<>項目1c<>
02<>項目2a<>項目2b<>項目2c<>
上記のようにデータは各フィールド毎に"<>"で区切られます。項目の内容に区切り記号("<>")が存在した場合、検索処理等で正常なデータが抽出でません。
項目番号は一番左が"0"で始まり、区切り文字毎に"1","2","3"と増えていきます。
上記のデータにinsert処理を行った場合、insertしたデータは先頭に追加されます。そのまま読み込んだ場合は新しい順でソートされます。
|
| 概要
new関数によってデータベースは初期化されます。new関数で獲得したデータから他の全ての関数を呼び出します。(呼び出し方法は他にもありますが、動作確認をしたのはSAMPLE方法です)
Sample
require "sajidb.pl"; ## データベースファイルの宣言
$sdb = new sajidb; ## データベースの初期化
$no = $sdb->sequence( "tableseq" ); ## プライマリーIDの取得
## データの作成
$rec = "$no<>これはテストです<>This is test<>sajiro@bigfoot.com<>";
$sdb->access("insert table01", "$rec" ); ## データの登録
$sdb->commit(); ## この時点でデータは正式に登録されます
## 登録したデータを抽出する
@dat=$sdb->access("query table01 4 eq sajiro@bigfoot.com" );
foreach(@dat){
## 抽出したデータを分割する。
($no,$japan,$english,$email) = split( /<>/ ,$_ );
## 分割したデータを表示する。
print "$no,$japan,$english,$email\n";
## このように表示されます
## --> 1,これはテストです,This is test,sajiro@bigfoot.com
}
|
| 概要
access関数から、insert,update,delete等により、変更されたデータはCommitにより変更が確定され、Rollbackによって変更をキャンセルすることが出来ます。
以下のプログラムを参照して下さい。
Sample
require "sajidb.pl"; ## データベースファイルの宣言
$sdb = new sajidb; ## データベースの初期化
$sdb->access("tablelock dattbl,seqtbl");## テープルロック
@dat = $sdb->access("query dattbl"); ## データの抽出(同時にテーブルをロックします)
foreach(@dat){
($no,$japan,$english,$email) = split( /<>/ ,$_ );
## 同じメールアドレスがあったらエラー
if($email eq "sajiro@bigfoot.com"){
print "このデータは既に登録されています";
$sdb->rollback(); ## 現在までの変更内容を消去します
}
}
## データの作成
$no = $sdb->sequence( "seqtbl" ); ## プライマリーIDの取得
$rec = "$no<>これはテストです<>This is test<>sajiro@bigfoot.com<>";
$sdb->access("insert dattbl", "$rec" ); ## データの登録
$sdb->commit(); ## この時点でデータは正式に登録されます
## 登録したデータを抽出する
@dat=$sdb->access( "query dattbl 4 eq sajiro@bigfoot.com" );
foreach(@dat){
## 抽出したデータを分割する。
($no,$japan,$english,$email) = split( /<>/ ,$_ );
## 分割したデータを表示する。
print "$no,$japan,$english,$email\n";
## このように表示されます
## --> 1,これはテストです,This is test,sajiro@bigfoot.com
}
|
|
|