"InterBase / Firebird" + "C++ Builder 6" + "dbExpress" を使用した、埋め込み SQL 風味の低レベルアクセス実験その2です。 スクリプトと組み合わせた定時バッチ処理や kylix 用デーモンへの移植を睨み、純コンソールプログラムで dbExpress を使用してみました。使用コンポーネントは、その1と同様に TSQLConnection のみです。 C++ Builder 6 を対象にしていますが、Kylix や Delphi でも基本的には同じだと思います。 |
− はじめに − | ||
---|---|---|
その1で、dbExpress のTSQLConnection コンポーネントのみを使用してデータベースを 自在にアクセスする方法について述べました。 今回は、フォーム(ウィンドウ)を持たないプログラムでの dbExpress 使用について 書こうと思います。今回の内容に関して、その1でも触れてはいましたが、今回は実例を挙げて いきたいと思います。 VCL/CLXコンポーネントを統合環境で使用する場合、通常は何らかのフォームにコンポーネント を貼り付けて使用します。 しかし、コンソールで動作するプログラムや Unix/Linux のデーモンなど、C++ Builder / Delphi / kylix を用いて開発するプログラムでも、独自のフォームというものを持たない物 もあります。 バックグラウンドで動作するプログラムや、cron などにより定時起動されるプログラムなど では良くある話でしょう。 このような場合は、dbExpress のコンポーネントを貼り付けるフォームがありませんので、 多少変則的な方法を使用して dbExpress を使用すればよいようです。変則的といっても特殊な ことをする訳ではなく、自前のプログラムコード内でオブジェクトの生成と設定の読込みを行う という程度のことです。 ちなみに、webサーバ用プログラムで webBroker 等を使用する場合は、専用の実表示を持たない フォームが用意されていますので特にこの方法を取る必要はありません。 gpre.exe を使用しても同様なことが出来ますが、gpre.exe は日本語ドキュメントがあまり ありませんし、Borland の開発ツールを使用する限りにおいては、本方法で特に困ることはないと 思われます。 今回は、iniファイルから設定を読み込む方式について書きます。 |
− iniファイルの準備 − | |||||
---|---|---|---|---|---|
接続に関する情報や、接続アカウントなどを設定した ini ファイルを準備します。 今回は、データベース本体が LAN上の Linux + Firebird 1.0.3 である場合の設定例を示します。 文字コードはシフトJISを指定しています。
InterBase / FireBird ではデータベースのファイルパスを直接指定しますので、 非常に理解しやすいです。ネットワーク経由の場合は、ドメイン名またはIPアドレスを ファイルパスの前に記述し、":"で区切る必要があります。 | |||||
− プロジェクトの設定、ヘッダのインクルードなど − | |||||
プロジェクトの新規作成時に、clx 使用(又はVCL使用)のチェックボックスをオンにします。 基本的には "clx.h" (vcl.h)がインクルードされていれば問題ない模様ですので、あとは ご自分で使用するオブジェクトに合わせてインクルードファイルを選択してください。 テストしたプログラムでは、SQL文の生成などに AnsiString を多用してるので、"StrUtils.hpp" もインクルードしました。 | |||||
− オブジェクト生成と設定読込み − | |||||
オブジェクトの生成と、設定ファイルは以下のように行います。 手順としては、new 演算子でオブジェクト(コンポーネント)を生成してプロパティ を設定した後に、LoadParamsFromIniFile メソッドで設定を読み込みます。他の方法も ありますが、ここでは解説しません。ヘルプを参照してください。 おまけとして、データベースへの接続と切断も入れておきました。 プロパティに設定する内容ですが、ドライバ名等、ライブラリ側で決められている内容 が存在しますので注意が必要です。ざっと見渡したところでは、参考になるドキュメント が発見できなかったため、統合環境上でダミー用プロジェクトを作成して調べました。 手順は、フォームが存在する GUI プロジェクトを作成し、そこに TSQLConnection コンポーネントを貼り付けたのち、接続データベースを使用したいデータベースに変更します。 すると、それに追従してプロパティの一部自動で設定されますので、その値を書き写す という泥縄式の方法で調べました。 ちなみに、iniファイルの内容も同様な方法で調べています。
|