!![[データベースの使い方について教えてください。|BBS-雑談掲示板/33]] - irija_bari (2007年10月13日 18時44分55秒) 質問させてください。 アドレス帳のようなデータベースとセットになっているアプリケーションでは、 どのようにデータベースを作成、オープン、クローズするものなのでしょうか? 下のコードのように、アプリケーション開始関数でデータベースをオープンすると、自動的にデータベースが作成されるようです。 しかし、アプリケーションを終了するときになにもしないと「メモリ リークが 1 つある」とエラー表示が出ます。 データベースをクローズ、または、メモリ ハンドルを解放すると「致命的なエラー」が表示されます。 どのような手順を踏むべきなのでしょうか? DmOpenRef dmOpenRef; UInt16 dbCardNo = 0; MemHandle dbHandle; LocalID dbID; static Err AppStart(void) { dbHandle = MemHandleNew(1); dbID = MemHandleToLocalID(dbHandle); dmOpenRef = DmOpenDatabase(dbCardNo, dbID, dmModeReadWrite); //この後、データベースをオープンできないときは、新たに作成、オープンするコードを //書いたのですが、使用されていないようです。 ... } static void AppStop(void) { // Close all the open forms. FrmCloseAllForms(); DmCloseDatabase(dmOpenRef); MemHandleFree(dbHandle); } また、Palm のデータベースには「カラム」という概念はないのでしょうか? レコードが複数のカラムを持つため、カラムを「,」区切りにしてレコードに収めています。 問い合わせをするときには、全レコードに対して、 +レコードを取り出す +区切り文字で切り分ける +切り分けたデータに対して評価を行う という手順を踏んでいます。なんだか、非効率な気がするのですが。。。 よろしくご指導ください。 !!コメント *Palm のデータベースの概念は、一般的な PC 環境やサーバ環境におけるいわゆる「Database」とは違います。どちらかというと、ファイルに近いものと考えたほうが良いでしょう。ひとまず、[[このあたり|Palm OS Programmer's Companion Volume I/6]]を読みましょう。また、「Palm OS Programmer's Companion Volume I」はざっとでもいいので全体を読み通すことをお勧めします。 - 陰郎 (2007年10月13日 21時13分37秒) *アドバイスをありがとうございます。Palm OS Programmer's Companion はいつも活用させてもらっています。2章の起動・終了コードにそれらしい記述があったので、サンプルプログラムも参考にして勉強してみます。概論を読むのがどうも苦手なのですよね。。。少しずつでもいいので覚えていきたいと思います。 - irija_bari (2007年10月14日 14時51分46秒) *>影朗さんレコード データの作成と取得には構造体を使用し、表示にはテーブルを使用すると便利なのですね。次はレコード データの変更に対応し、次はレコード データのカテゴリ分け、その次は PC との同期に対応しようと思っています。Companion の訳出作業は順調に進んでいるようですね。お疲れ様です。区切りが付いたら、アンカ対応をよろしくお願いします。 - irija_bari (2007年10月30日 11時36分45秒) {{comment}}