DBD::XBaseモジュール(日本語チョー訳)

by Hippo2000(1999/10/20)

DBD::XBaseモジュールなのです。使ったことがないモジュールなのですが...。

なおこのドキュメントではDBD::XBaseモジュールを入れると入ってくるXBase.htmlを日本語化したものです。わかりにくい部分は本物を見てください。(^^;;

原本の著作権は Jan Pazdzioraさんがお持ちです。Jan Pazdzioraさんにはメールで了解をいただきました。

なお内容等が間違っていたら修正します。ご連絡ください


目次


名前

DBD::XBase - XBase互換データベースファイルのためのDBIドライバ


概要

    use DBI;
    my $dbh = DBI->connect("DBI:XBase:/directory/subdir")
                                or die $DBI::errstr;
    my $sth = $dbh->prepare("select MSG from test where ID != 1")
                                or die $dbh->errstr();
    $sth->execute() or die $sth->errstr();
    my @data;
    while (@data = $sth->fetchrow_array())
                { ## さらなる処理 }
    $dbh->do('update table set name = ? where id = 45', {}, 'krtek');

説明

XBaseのためのDBI準拠のドライバ・モジュールです。モジュールの実際の使い方については、DBI(3)をご覧下さい。connect コールでは、dbfファイル(そして他のファイルやメモなど)が入っているディレクトリを接続文字列の3番目の部分に指定してください。デフォルトは現在のディレクトリになります。

dbfでは、ドライバが通信するデータベースサーバがないことに注意してください。このDBD::XBaseはXBase.pmモジュールからディスクにあるファイルへの読み込み、書きこみのために直接、メソッドを呼び出します。そのため、XBase.pmの制約と特徴がすべてDBD::XBaseにも当てはまります。DBD::XBaseは基本的にSQL、DBI準拠のXBase.pmへのインターフェースを追加しているのです。

DBD::XBaseは、その時点でインデックスファイルを作りません。インデックス化されたアクセスが本当に必要であれば、ndxサポートのための注意書きをXBase(3)でチェックしてみてください。


サポートされているSQLコマンド

DBD::XBaseによってサポートされているSQLコマンドには以下のものがあります:


select

    select フィールド指定 from テーブル [ where 条件 ]
                                        [ order by フィールド ]

フィールド指定 はカンマ区切ったフィールドのリストまたは全てのフィールドを表す*になります。where条件は返される行を指定する条件になります。ここには算術あるいは論理演算を指定することが出来ます。フィールドや定数の比較、andやorが使えます。likeを使ったマッチングもサポートしています。

例:

    select * from salaries where name = "Smith" 
    select first,last from people where login = "ftp"
                                                or uid = 1324
    select id,first_name,last_name from employ
                                        where last_name like 'Ki%'
    select id,name from employ where id = ?

最後の例にあるようにwhere節でバインド・パラメータを指定することが出来ます。実際の値はbind_paramで設定されるかexecuteやdoの呼び出しときに与えられます。詳細はDBI(3)をご覧下さい。whereでのNULL値のチェックのためには、id == nullではなく、id is null や id is not nullを使ってください。


delete

    delete from テーブル [ where 条件 ]

where 条件 select.と同じです。

例:

    delete from jobs            ## テーブルを空にします
    delete from jobs where companyid = "ISW"
    delete from jobs where id < ?

insert

    insert into テーブル [ ( フィールド指定 ) ] values ( 値のリスト )

フィールド指定は(オプションで)、カンマで区切られた設定されるフィールドのリストになります。値のリスト は代入する定数のリストです。フィールド指定 が指定されなければ、テーブルでの順番通りのフィールドに設定されます。値のリスト にバインド・パラメータを使うことも出来ます。

例:

    insert into accounts (login, uid) values ("guest", 65534)
    insert into accounts (login, uid) values (?, ?)
    insert into passwd values ("user","*",4523,100,"Nice user",
                                "/home/user","/bin/bash")

update

    update テーブル set フィールド = 新しい値 [ , フィールドと値の組み合わせ ]
                                        [ where 条件 ]

例:

    update passwd set uid = 65534 where login = "guest"
    update zvirata set name = "Jezek", age = 4 where id = 17

再び、値はバインド・パラメータとしても指定することができます。

    update zvirata set name = ?, age = ? where id = ?

create table

    create table テーブル ( カラム指定 )

カラム指定 はカラム名とデータ型のカンマで区切られたリストになります。

例:

    create table rooms ( roomid int, cat char(10), balcony boolean )

データ型には以下のものが指定できます:

    char num numeric int integer float boolean blob memo date time
    datetime

このなかのいくつかは同義語です。これらは当然、適切はXBaseのデータ型に変換されます。


drop table

    drop table テーブル名

例:

    drop table passwd

バージョン

0.147


作者

(原文のまま)

(c) 1997--1999 Jan Pazdziora,adelton@fi.muni.cz , http://www.fi.muni.cz/~adelton/ at Faculty of Informatics, Masaryk University in Brno, Czech Republic


参考資料

perl(1); DBI(3), XBase(3)


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。