<a target="_blank" href="http://bbs.qter.org/forum.php?mod=viewthread&tid=154">樓主</a>
發表于 2013-5-13 21:28:02 | 檢視:
1616| 回複: 12
編譯myqsl資料庫驅動
版權聲明
該文章原創于作者yafeilinux,轉載請注明出處!
導語
在上一節的末尾我們已經看到,現在可用的資料庫驅動隻有兩類3種,那麼怎樣使用其他的資料庫呢?在qt中,我們需要自己編譯其他資料庫驅動的源碼,然後當做插件來使用。下面就以現在比較流行的mysql資料庫為例,說明一下怎樣在qtcreator中編譯資料庫驅動。
環境:windows xp + qt 4.8.4+qt creator2.6.2
目錄
一、檢視怎樣編譯資料庫驅動
二、下載下傳mysql
三、安裝mysql
四、在mysql中建立資料庫
五、編譯mysql驅動
六、測試mysql程式
正文
1.在qt creator的幫助模式索引sql database drivers關鍵字,這篇文檔裡詳細介紹了qt資料庫的相關内容。
2.我們在文檔中定位到how to build the qmysql plugin on windows一段,這裡講解了怎樣在windows下編譯mysql驅動。如下圖所示。
可以看到,主要分為兩步,首先下載下傳并安裝mysql,在安裝時要使用custom install定制安裝,安裝上庫libs和頭檔案include
files;然後是編譯,注意在編譯驅動前先添加上mysql的庫和頭檔案。
2.然後進入該頁面最下面的mysql community edition(gpl)連結,我們使用遵循gpl協定的開源版本。如下圖所示。
3.在新的頁面我們選擇左上角downloads按鈕下面的archives選項,從檔案中下載下傳。如下圖所示。
1.運作下載下傳的安裝包,如下圖所示。
2.點選next,進入下一步,這裡我們選擇同意條款。如下圖所示。
3.接着next,下面我們選擇定制安裝custom。如下圖所示。
4.這裡需要安裝所有的頭檔案和庫,點選development components前面的下拉箭頭,然後選擇第二項。如下圖所示。大家也可以看下右邊的說明。
5.然後選擇下面的browse…來更改安裝路徑,這裡設定為c:\mysql\,如下圖所示。
6.填寫完路徑後點選ok回到首頁面,點選next來到新的頁面,這裡選擇install來進行安裝。如下圖所示。
7.等安裝完畢後,點選finish完成安裝。如下圖所示。
1.下面我們先在安裝的mysql中建立一個資料庫,用于後面的測試。首先到myqsl的安裝目錄c:\mysql\bin目錄下運作mysqld.exe程式,該程式運作完成後會自動關閉。如下圖所示。
2.在windows開始中點選“運作”,然後輸入cmd,進入終端後我們輸入下面的指令:
cd c:\mysql\bin
跳轉到安裝目錄下。如下圖所示。
3.然後輸入下面的指令:
mysql –uroot –p
我們使用root使用者來登陸mysql,因為預設密碼是空的,是以這裡不用設定密碼。運作這行代碼會提示enterpassword,我們這時敲回車即可。如下圖所示。
4.登入mysql以後,我們使用下面的指令來檢視現有的資料庫:
show databases;
注意後面有個分号。如下圖所示。
可以看到,這裡現在已經有幾個資料庫了,他們是mysql需要的。如下圖所示。
5.我們不使用已經有的資料庫,而是建立自己的資料庫,下面建立名為mydata的資料庫:
create database mydata;
如下圖所示。
6.我們再次檢視已經存在的資料庫,發現顯示出了剛才建立的資料庫,如下圖所示。
7.完成後,可以輸入exit退出mysql。
這裡隻是簡單介紹了一下在mysql中建立資料庫的基本步驟,如果大家想學習更多的mysql的使用,請參考其他資料。
1.我們進入qt安裝目錄的mysql源碼目錄中,具體路徑為(這裡qt安裝在了c盤):
c:\qt\4.8.4\src\plugins\sqldrivers\mysql
2.我們使用qt creator打開裡面的mysql.pro項目檔案。然後打開mysql.pro檔案,在最下面添加下面兩行代碼:
includepath +=
c:/mysql/include/
libs+= -lc:/mysql/lib/ -llibmysql
這樣便包含了mysql的庫和頭檔案。如下圖所示。
3.現在我們使用左下角的錘子
按鈕來建構項目。預設建構的是debug版本,會在qt目錄的mysql目錄的同層目錄裡面生成建構目錄,如下圖所示。
裡面的debug目錄裡有我們需要的qsqlmysqld4.dll和libqsqlmysqld4.a檔案,不過它們隻用于開發debug版本的mysql程式。如下圖所示。
4.為了生成release庫,我們在qt creator中運作按鈕那裡設定為編譯release版本。如下圖所示。
5.下面再次按下錘子按鈕來編譯項目,就會生成“build-mysql-桌面-release”樣式的建構目錄,裡面包含了釋出release版本程式需要的dll檔案qsqlmysql4.dll。
6.我們将生成的qsqlmysql4.dll,libqsqlmysql4.a,qsqlmysqld4.dll,libqsqlmysqld4.a都複制到c:\qt\4.8.4\plugins\sqldrivers目錄下,這是資料庫驅動插件放置的目錄。如下圖所示。
1.建立qt控制台應用,名稱為sqldrivers。完成後在pro檔案中更改如下:
qt += core sql
2.更改main.cpp檔案内容如下。
#include <qcoreapplication>
#include <qsqldatabase>
#include <qdebug>
#include <qstringlist>
#include <qsqlquery>
int main(int argc, char *argv[])
{
qcoreapplication a(argc, argv);
// 輸出可用資料庫
qdebug() << "available drivers:";
qstringlist drivers = qsqldatabase::drivers();
foreach(qstring driver, drivers)
qdebug() << driver;
// 打開mysql
qsqldatabase db = qsqldatabase::adddatabase("qmysql");
db.sethostname("localhost");
db.setdatabasename("mydata");
db.setusername("root");
db.setpassword("");
if (!db.open())
qdebug() << "failed to connect to root mysql admin";
else qdebug() << "open";
qsqlquery query(db);
//注意這裡varchar一定要指定長度,不然會出錯
query.exec("create table student(id int primary key,name varchar(20))");
query.exec("insert into student values(1,'xiaogang')");
query.exec("insert into student values(2,'xiaoming')");
query.exec("insert into student values(3,'xiaohong')");
query.exec("select id,name from student where id >= 2");
while(query.next())
{
int value0 = query.value(0).toint();
qstring value1 = query.value(1).tostring();
qdebug() << value0 << value1 ;
}
return a.exec();
}
複制代碼
這裡注意,建立表時varchar一定要指定長度。現在運作程式,會出現如下圖所示的結果:
這裡提示mysql驅動沒有加載。
3.我們到c:\mysql\lib中将libmysql.dll檔案複制到c:\qt\4.8.4\bin中,然後再次運作程式,發現已經成功了,如下圖所示。
結語
在qt中編譯mysql資料庫驅動的内容到這裡就介紹完了。從下一篇開始,我們将以sqlite資料庫為範例來講解qt資料庫部分的應用。
涉及到的代碼:
kb, 下載下傳次數: 18)