Firebird是典型的嵌入式数据库。所谓嵌入式数据库,简单地说就是不需要单独数据库服务器安装配置,只需要在应用软件中加入客户端接口就可以直接把一个文件当做数据库存取。而Firebird则是出自Borland公司的Interbase数据库,为后者的开源免费版本。笔者最早最早接触的是SQLite,后来由于其某些SQL特性不完善,故而找到了完全支持SQL92标准,支持大部分SQL-99标准功能的Firebird。只是最后也仅用于零散的练手项目,也没有深入研究下去。

QT Manual里已经给出了Interbase驱动器编译方法,这里将其稍作修改支持Firebird。

1、修改ibase工程文件ibase.pro如下:

TARGET  = qsqlibase
HEADERS  = ../../../sql/drivers/ibase/qsql_ibase.h
SOURCES  = main.cpp \
    ../../../sql/drivers/ibase/qsql_ibase.cpp
INCLUDEPATH += C:\Firebird\Firebird_2_1\include
LIBS += C:\Firebird\Firebird_2_1\lib\fbclient_ms.lib
unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS    *= -lgds
win32:!contains( LIBS, .*gds.* ):!contains( LIBS, .*fbclient.* ) {
 !win32-borland:LIBS *= -lfbclient_ms
 win32-borland:LIBS  += gds32.lib
}
include(../qsqldriverbase.pri)

2、编译生成QT插件:

命令行下进入%QtDir%\src\plugins\sqldrivers\ibase;

键入qmake ibase.pro回车;

键入make回车。


  注意:(1)、自行确保相关环境变量设置

      (2)、%PATH%添加%Firebird%\bin。(QT资料上要求,未测试是否强制需要) 

3、拷贝embed版中的fbembed.dll、icuin30.dll、icudt30.dll、icuuc30.dll至执行程序目录,并将fbembed.dll更名为fbclient.dll。 

4、连接测试代码如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE", "Firebird");
 db.setDatabaseName("e:\\cuzn.fdb");
 db.setUserName("SYSDBA");
 db.setPassword("masterkey");
 if (db.open())
 {
  QMessageBox mb;
  mb.setText("ok");
  mb.exec();
  db.close();
 }

欢迎访问cuzn小站