また迷ってきた。TStringGridを使うならsqliteでも別に構わないということに気づいた。そもそもfirebirdを使うことにしたのはDBGridにselect文の結果データセットを上手くバインドできなかったからで、DBGridを使わないということならsqliteを使うことを検討してもいいことになる。
sqliteのメリット
- auto incrementが使える
- データベースファイルをコードから作成できる
- firebirdよりも高速(らしい)
- データベースを管理するソフトウェアが豊富
- 技術情報が多い
firebirdのメリット
- varchar型が使える(DBGridを使うならそのまま表示することができる)
- ユーザーとパスワードが設定できる
- sqliteよりもデータ型が多い
- delphiのinterbase系のコンポーネントとの親和性が高い
sqliteのデメリット
- 文字列型がtext型(DBGridを使う場合は一工夫必要になる)
- ユーザとパスワードの設定が無い
- TStringGridにデータをバインディングする場合は、カラムの文字列の位置(左寄せ、右寄せ、中央)などの設定がないので自らコーディングしなければならない。(これ、TSTringGridを使う人には結構致命的)
firebirdのデメリット
- データベースファイルを作成するのが面倒
- SQLの文法がとっつきにくい
- auto increment が無いのでトリガーとジェネレータを作成しなければならない
感想
高度なデータベース操作ができない私にとっては、auto incrementの有無は結構大きなポイントだったりする。ソフトウェアのDBをバージョンアップしたりするときにテーブルを追加する度にジェネレータとトリガーを追加しなければならないというのは、結構なストレスになる。気分的にはfirebirdよりsqliteを使いたいという方へ傾いている。sqliteのwrapperを使ったコーディングだと、ものすごく簡単にできてしまう。