第9回 データベース 「3.データベース用コマンド 共通のもの」
|
|
9−3 データベース用コマンド 共通のもの
データベースに2種類のモードがありますので、これらのモードに対応毎に使えるコマンド類が異なっています。 最初に、各モードに共通のコマンドを説明して、次に個々のモードを順に説明することにしましょう。 1.データベース共通コマンド データベースを取り扱うためには、モードに関係なく、データベースファイルがなければお話になりませんので、大抵の場合、新規に作ります。 これには、DbCreate()というコマンドを使います。 DbCreate(DbName,FileName,CardNo,ID) DbNameは、データベース名です。これは、具体的には、プログラム中で使用するデータベースの名前を指定しますが、これは、データベース型の変数をしてします。 データベース型の変数は、次のように宣言します。 Dim DbX as Database Filenameはファイル名で、PalmOS上で取り扱うファイル名を指定します。 NS Basicのハンドブックには 「Palm命名慣習はデータベース名の後にハイフンと作成者コードが続きます。」 とありますが、ま、暫定的にアプリケーション名にハイフンとクリエータIDを続けておきましょうか。 CardNoは、メモリーカードの番号です。本体の内蔵メモリが 0 ですので、通常は、これを指定します。 そして、最後にクリエータIDです。 例えば、AmiSolというアプリは、クリエータIDが「AmiS」ですので、次のように定義してあります。
Dim AmiDb as Database
Dim res as Integer
res=DbCreate(AmiDb,"AmiSolDb-Ami",0,"AmiS")
(データベースファイル名は、AmiSolDb-Amiか、うむ、さっき言った暫定的な命名の慣習からは外れていますね・・・)この例でも示しましたが、DbCreateコマンドには戻り値がありますので、これは関数ですね。 実は、データベース関連のコマンドは、全てが戻り値を持った関数で、その実行結果などが戻り値として返されます。 これらの結果コードは以下の通りですが、私も全てのエラーに遭遇したわけではありませんので、単なるハンドブックからの引用のみとしておきます。
さて、データベースファイルが存在すれば、基本的な処理手順は、次の通りになります。
データベースファイルを開くには、DbOpen()を使います。 データベースを開く DbOpen(DbName,FileName,CardNo) 指定する引数は、DbCreateからクリエータIDを除いたものと同じです。 データベースファイルが存在すれば、ファイル名だけでいいジャン、と思われますが、ま、文法ですので、我慢我慢。 その代わり、と言っては何ですが、閉じる DbClose()はシンプルです。 データベースを閉じる DbClose(DbName) DbOepn()もDbClose()もDbCreate()と結果コード表の中から戻り値を返します。 毎回あのコード表を調べるのは面倒ですが、正常に終われば 0 が返ってくる事だけ覚えておいても実用上は十分です。 なんらかの理由でデータベースを消したい場合、DbErase()を使います。 データベースファイルを消す DbErase(DbName) これで、指定したデータベース全体を消去します。 ただ、消す時の注意事項にちょっと不思議な点があります。 データベースを消去する際、消す対象となるデータベースが存在することはもちろんですね。で、その際、そのデータベースは、DbClose()で閉じられていなければならない、と言う事も、なんとなく理解できます。 しかし、消去すべきデータベースは、「一度でも、開かれていなければならない」とハンドブックに記載があります。 つまり、DbCreate()で作成したけれど、結局、一度も使わずに消去することはできない、ということですね。 ちょっと、不可解な注意事項だと思いませんか? データベースの中に、いくつのレコードがあるかを調べる DbGetNoRecs()という関数です。 レコード数を調べる DbGetNoRecs(DbName) この関数が戻り値がレコードの数ですが、データベース関連のコマンドで結果コード表を使わない唯一の関数です。 データベースを処理する時、DbErase()やDbCreate()を使う場合を除くと、データベース処理対象は、1レコードずつです。 この処理対象となったレコードの事をポジションといいます。 ポジションを先頭レコードにセットするDbReset()という関数があります。 状態をリセットする DbReset(DbName) これで、データベース内のポジションが初期化され、対象レコードが先頭になります。 ポジションの話は、次に続く各モード毎の説明で、詳しく説明することにして、とりあえず、これらのコマンド類がデータベース操作時の共通関数でした。 これらの共通関数は、基本的にデータベースファイルに対する処理ですので、なんとなく共通である意味が理解できる気がします。 次は、各モード毎の説明をしたいと思います。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
第9回 データベース 「3.データベース用コマンド 共通のもの」
|