本ページでは、C++言語からFirebirdを利用する方法を説明します。
C++からデータベースにアクセスするには”IBPP”というクラスライブラリを利用します。
“IBPP”を利用することで、データの参照や更新以外にも、データベース作成、スイープの変更などの
管理操作まで行うことができます。
また、次のサンプルソースコードを使って、C++から接続を行いますので
“SampleConnect.cpp”という名前で保存しておいてください。
//OSに合わせてコメントアウト
#define IBPP_WINDOWS
//#define IBPP_LINUX
#ifdef IBPP_WINDOWS
#include <windows.h>
#endif
#ifdef IBPP_LINUX
#include <unistd.h>
#endif
#include <iostream>
#include <string>
#include "./core/ibpp.h"
#include "./core/all_in_one.cpp"
//環境に合わせて変更してください。
//-----------------------------------------------------------
    //接続ユーザ
    const char *USER = "tama";
    //接続パスワード
    const  char *PASS = "neko";
    //データベースファイルパス
    const char *DATABASE_FILEPATH 
        = "G:¥¥fdb¥¥TEST.FDB";
    //データ参照SQL
    const char *SQL_SELECT
        = "SELECT shopno,shopname,openday FROM petshop";
//-----------------------------------------------------------
int main() {
    IBPP::Database db;
    IBPP::Transaction tr;
    IBPP::Statement stmt;
   
    //データベース接続
    db = IBPP::DatabaseFactory("localhost",DATABASE_FILEPATH,
      USER,PASS);
    db->Connect();
    //トランザクション開始
    tr = IBPP::TransactionFactory(db,IBPP::amWrite, 
      IBPP::ilConcurrency, IBPP::lrWait);
    tr->Start();
    //ステートメント作成
    stmt = IBPP::StatementFactory(db, tr);
    //SELECT文
    stmt->Execute(SQL_SELECT);
    //レコード格納用
    int icol; //数値型
    std::string scol; //文字列型
    IBPP::Date dcol; //DATE型
    int year,mon,day; //DATE型変換先
    //SQL実行結果表示
    for (int i = 0;stmt->Fetch();i++) {
        //SQLを変更したときは以下も合わせて変更
        stmt->Get(1,icol);  //数値型
        stmt->Get(2,scol);  //文字列型
        stmt->Get(3,dcol);  //日付型
        
        //DATE型をint型変数に変換
        dcol.GetDate(year,mon,day);
    
        std::cout
          << (i + 1)
          << " : "
          << icol
          << ","
          << scol.c_str()
          << ","
          << year
          << "/"
          << mon
          << "/"
          << day
          << "¥n";
    }
    // クローズ処理はこの順番で行う
    stmt->Close();
    tr->Commit();
    db->Disconnect();
}
“IBPP”を利用するにはIBPPクラスライブラリが必要となりますので
IBPP公式サイトからダウンロードします。
- サイトの”Where can I get IBPP?”にある”development pages”リンクを押下します。
   
- “Download Now”を押下します。
   
- 数秒経つとダウンロードが始まります。
 始まらない場合は”Direct Link”を選択します
 
   
- ダウンロードしたzipファイルを解凍します。
 “core”フォルダ以下にIBPPのクラスライブラリがあります。
   
- “core”フォルダを”SampleConnect.cpp”と同じフォルダにコピーします。
 
   
- コマンドプロンプトから”cd <移動先フォルダ>”と入力し、
 “SampleConnect.cpp”を配置したフォルダに移動します。
   
- C++コンパイラでプログラムのコンパイルを行います。
 Windows : bcc SampleConnect.cpp
 Linux : g++ SampleConnect.cpp -lfbclient
 ※例ではbcc、g++コンパイラ使っています。事前にインストール、環境変数の設定が必要です。
   
- コンパイルしてできたプログラムを実行します。
 Windows : a.exe
 Linux : ./a.out
   IBPPの詳細な使い方については、IBPP公式サイト 
 の”reference documentation”および
 ダウンロードしたzipファイルのtestsフォルダを参照してください。
Firebird初心者講座 目次
- Firebirdデータベースの質問にも回答してくれるQAサイト
 →エンジニア特化型Q&Aサイト「teratail」
 IT系に特化してるのでかなり便利。
- Firebirdはじめに
 Firebirdとは?
 起動と停止
 インストール
 環境変数PATHの設定
- データベース作成・接続
 ユーザ作成
 データベース作成
 データベース接続
 テーブル作成
 データの追加と参照
- メンテナンス・バックアップ
 バックアップ・復元
 スイープ
- プログラムとの連携
 Java(JDBC接続)
 C++(IBPP)
 OpenOffice Base(ODBC)
 ODBCドライバのインストール
- 管理ツールibWebAdmin
 ibWebAdminとは?
 ibWebAdminのインストール
 ibWebAdminにアクセス
Firebird関連書籍
- Firebird徹底入門 
 Firebirdをやるなら必須!インストールから実際の運用方法、便利なツール、各言語からの利用方法など幅広く紹介されています。
- The Firebird Book~ 
 アーキテクチャについて書かれていますが洋書。詳しく知りたい方なら読んでおくべき。
- オープンソースデータベースの導入と運用の実際 
 少し古いですが基本は今も同じ。中古で安く買えます。











 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                 
                                                
                                                