Qt 的 MySQL 驅動程式
|
|
那天帶著剛滿月的小女兒回家,跟我媽在那邊聊天時,聊到我小時候,我說希望小女兒像我老婆一樣聰明,我說的是實話,因為我媽也跟著說,我其實不聰明,但就是努力,還談到,以前我小時候因為笨,唸書記不住課文,必須要唸出聲來才比較記得住課文,有一次我爸工作下班回來很累,我又在隔壁房間大聲唸書,搞的他覺得吵大發脾氣,也因此我才改默唸的方式來記課文,剛開始記得非常慢,花了好一段時間才適應。
不知道為什麼,很多人覺得我很聰明,也有很多人以為我求學一定是一帆風順的那種人,其實,我求學過程真的不平順,有些東西講給我老婆聽,她還會大笑,說怎麼這麼誇張,這個以後有機會再談談好了,總之,我還是覺得自己很笨,記不住許多細節,數字我尤其不在行,我就從來記不住JSR的編號,現在有關數字的東西,一律交給我老婆,我也樂得輕鬆。
也因為求學過程並不平順,對於學習的挫折感受遠比一些人深,也因此我特別重視學習的方式與技巧,會去分辨一些細節瑣碎的東西,儘量不去強記那些東西枝微末節,而常會去把一件東西釐清出核心的東西,把我的腦容量儘量空出來給這些核心的東西用。
就像是今天試的東西,Qt的MySQL驅動程式編譯,其實就是一堆指令組合的成份居多,試出來之後,我通常就記不得了,老是在嘗試與遺忘之間,我覺得是件很浪費時間的事,這些東西沒什麼,就是得花點時間嘗試,所以應該記下來,以後有要用到,就照著再作一遍就好了。
以下是Qt的東西了,屬於技術細節,沒興趣的就不用往下看了。。XD
在Qt線上文件 SQL Database Drivers 中有提及如何建構Qt的資料庫驅動程式,在這邊簡介一下,如何在Windows下使用Qt OpenSource 4.3.3自行編譯MySQL驅動程式的plugin。
- 安裝MySQL時必須有Include Files / Lib Files選項
- 複製MySQL的include與lib目錄
- 下載 mingw-utils
- 使用reimp與dlltool
cd c:\mysql\lib\opt
reimp -d libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a
- 編譯驅動程式
qmake -o Makefile "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\opt\libmysql.a" mysql.pro
make
完成以上的步驟並編譯完成之後,可以在Qt安裝目錄中的plugins\sqldrivers目錄中,找到編譯好的MySQL驅動程式plugin。
接下來可以編寫程式測試資料庫連結,Qt的資料庫支援是放置在QtSql模組之中,您可以使用QSqlDatabase的靜態addDatabase() 方法指定"QMYSQL",這會載入驅動程式並傳回QSqlDatabase實作物件,之後可以使用setHostName()、 setDatabaseName()、setUserName()、setPassword()等方法,設定資料庫的URL位址、資料庫名稱、使用者與密 碼,然後使用open()方法開啟連線,使用close()方法關閉連線。
下面這個程式是個簡單示範:
#include <QApplication>
#include <QtSql>
#include <QLabel>
bool createConnection() {
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("demo");
db.setUserName("root");
db.setPassword("123456");
if (!db.open()) {
return false;
}
db.close();
return true;
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel;
label->setWindowTitle("Qt Database");
if(createConnection()) {
label->setText("<h1>Connected to database!</h1>");
}
else {
label->setText("<h1>Connection fail!</h1>");
}
label->show();
return app.exec();
}
接著執行qmake -project產生.pro檔案,為了要連結QtSql模組,記得編輯.pro檔案,在當中加上一行:
接著就可以再次執行qmake產生Makefile,執行make進行程式編譯了。下圖為程式執行時的參考畫面:
真特別的開場白。上文「記不住JSR的編號」不重要,只要「記住JSeRv的帳號」就好 XD
原來 Win32 下 MySQL driver for Qt4 建構這麼麻煩呀!
由...發表 jserv on 四月 01, 2008 at 08:21 下午 CST #
上文「記不住JSR的編號」不重要,只要「記住JSeRv的帳號」就好 <--- 這樣也行。。Orz....
由...發表 良葛格 on 四月 01, 2008 at 09:16 下午 CST #
請問QT4如何連INFORMIX資料庫,
可以幫忙嗎,到處都找不到啊
開發環境為WINDOWS xp
執行環境為Solaris
由...發表 andyyeng on 九月 30, 2008 at 08:23 下午 CST #