天天看點

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

<a target="_blank" href="http://bbs.qter.org/forum.php?mod=viewthread&amp;tid=154">樓主</a>

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

 發表于 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驅動。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

可以看到,主要分為兩步,首先下載下傳并安裝mysql,在安裝時要使用custom install定制安裝,安裝上庫libs和頭檔案include

files;然後是編譯,注意在編譯驅動前先添加上mysql的庫和頭檔案。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

2.然後進入該頁面最下面的mysql community edition(gpl)連結,我們使用遵循gpl協定的開源版本。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

3.在新的頁面我們選擇左上角downloads按鈕下面的archives選項,從檔案中下載下傳。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動
[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動
[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動
[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

1.運作下載下傳的安裝包,如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

2.點選next,進入下一步,這裡我們選擇同意條款。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

3.接着next,下面我們選擇定制安裝custom。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

4.這裡需要安裝所有的頭檔案和庫,點選development components前面的下拉箭頭,然後選擇第二項。如下圖所示。大家也可以看下右邊的說明。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

5.然後選擇下面的browse…來更改安裝路徑,這裡設定為c:\mysql\,如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

6.填寫完路徑後點選ok回到首頁面,點選next來到新的頁面,這裡選擇install來進行安裝。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

7.等安裝完畢後,點選finish完成安裝。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

1.下面我們先在安裝的mysql中建立一個資料庫,用于後面的測試。首先到myqsl的安裝目錄c:\mysql\bin目錄下運作mysqld.exe程式,該程式運作完成後會自動關閉。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

2.在windows開始中點選“運作”,然後輸入cmd,進入終端後我們輸入下面的指令:

cd c:\mysql\bin

跳轉到安裝目錄下。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

3.然後輸入下面的指令:

mysql –uroot –p

我們使用root使用者來登陸mysql,因為預設密碼是空的,是以這裡不用設定密碼。運作這行代碼會提示enterpassword,我們這時敲回車即可。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

4.登入mysql以後,我們使用下面的指令來檢視現有的資料庫:

show databases;

注意後面有個分号。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

可以看到,這裡現在已經有幾個資料庫了,他們是mysql需要的。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

5.我們不使用已經有的資料庫,而是建立自己的資料庫,下面建立名為mydata的資料庫:

create database mydata;

如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

6.我們再次檢視已經存在的資料庫,發現顯示出了剛才建立的資料庫,如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

7.完成後,可以輸入exit退出mysql。

       這裡隻是簡單介紹了一下在mysql中建立資料庫的基本步驟,如果大家想學習更多的mysql的使用,請參考其他資料。

1.我們進入qt安裝目錄的mysql源碼目錄中,具體路徑為(這裡qt安裝在了c盤):

c:\qt\4.8.4\src\plugins\sqldrivers\mysql

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

2.我們使用qt creator打開裡面的mysql.pro項目檔案。然後打開mysql.pro檔案,在最下面添加下面兩行代碼:

includepath +=

c:/mysql/include/

libs+= -lc:/mysql/lib/ -llibmysql

       這樣便包含了mysql的庫和頭檔案。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

3.現在我們使用左下角的錘子 

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

 按鈕來建構項目。預設建構的是debug版本,會在qt目錄的mysql目錄的同層目錄裡面生成建構目錄,如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

裡面的debug目錄裡有我們需要的qsqlmysqld4.dll和libqsqlmysqld4.a檔案,不過它們隻用于開發debug版本的mysql程式。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

4.為了生成release庫,我們在qt creator中運作按鈕那裡設定為編譯release版本。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

5.下面再次按下錘子按鈕來編譯項目,就會生成“build-mysql-桌面-release”樣式的建構目錄,裡面包含了釋出release版本程式需要的dll檔案qsqlmysql4.dll。

6.我們将生成的qsqlmysql4.dll,libqsqlmysql4.a,qsqlmysqld4.dll,libqsqlmysqld4.a都複制到c:\qt\4.8.4\plugins\sqldrivers目錄下,這是資料庫驅動插件放置的目錄。如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

1.建立qt控制台應用,名稱為sqldrivers。完成後在pro檔案中更改如下:

qt       += core   sql

2.更改main.cpp檔案内容如下。

#include &lt;qcoreapplication&gt;

#include &lt;qsqldatabase&gt;

#include &lt;qdebug&gt;

#include &lt;qstringlist&gt;

#include &lt;qsqlquery&gt;

int main(int argc, char *argv[])

{

    qcoreapplication a(argc, argv);

    // 輸出可用資料庫

    qdebug() &lt;&lt; "available drivers:";

    qstringlist drivers = qsqldatabase::drivers();

    foreach(qstring driver, drivers)

        qdebug() &lt;&lt; driver;

    // 打開mysql

    qsqldatabase db = qsqldatabase::adddatabase("qmysql");

    db.sethostname("localhost");

    db.setdatabasename("mydata");

    db.setusername("root");

    db.setpassword("");

    if (!db.open())

        qdebug() &lt;&lt; "failed to connect to root mysql admin";

    else qdebug() &lt;&lt; "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 &gt;= 2");

    while(query.next())

    {

        int value0 = query.value(0).toint();

        qstring value1 = query.value(1).tostring();

        qdebug() &lt;&lt; value0 &lt;&lt; value1 ;

    }

    return a.exec();

}

複制代碼

       這裡注意,建立表時varchar一定要指定長度。現在運作程式,會出現如下圖所示的結果:

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

這裡提示mysql驅動沒有加載。

3.我們到c:\mysql\lib中将libmysql.dll檔案複制到c:\qt\4.8.4\bin中,然後再次運作程式,發現已經成功了,如下圖所示。

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

結語

       在qt中編譯mysql資料庫驅動的内容到這裡就介紹完了。從下一篇開始,我們将以sqlite資料庫為範例來講解qt資料庫部分的應用。

涉及到的代碼: 

[Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動 [Qt教程] 第22篇 資料庫(二)編譯MySQL資料庫驅動

kb, 下載下傳次數: 18)