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(); }