該文章原創於Qter開源社區(www.qter.org),作者yafeilinux,轉載請註明出處!
轉載自:點擊打開鏈接http://bbs.qter.org/forum.php?mod=viewthread&tid=154&extra=page%3D1
導語
在上一節的末尾我們已經看到,現在可用的數據庫驅動只有兩類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的庫和頭文件。
二、下載MySQL
2.然後進入該頁面最下面的MySQL Community Edition(GPL)鏈接,我們使用遵循GPL協議的開源版本。如下圖所示。
3.在新的頁面我們選擇左上角Downloads按鈕下面的Archives選項,從檔案中下載。如下圖所示。
7.
下載後的最終文件爲:mysql-5.6.10-win32
(大家也可以下載我們上傳到網上的軟件包,因爲下面的操作只需要MyQSL
的庫、頭文件以及最基本的功能,所以我們下載了該版本)
三、安裝MySQL
1.運行下載的安裝包,如下圖所示。
2.點擊Next,進入下一步,這裏我們選擇同意條款。如下圖所示。
3.接着Next,下面我們選擇定製安裝Custom。如下圖所示。
4.這裏需要安裝所有的頭文件和庫,點擊Development Components前面的下拉箭頭,然後選擇第二項。如下圖所示。大家也可以看下右邊的說明。
5.然後選擇下面的Browse…來更改安裝路徑,這裏設置爲C:\MySQL\,如下圖所示。
6.填寫完路徑後點擊ok回到主頁面,點擊Next來到新的頁面,這裏選擇Install來進行安裝。如下圖所示。
7.等安裝完畢後,點擊Finish完成安裝。如下圖所示。
四、在MySQL中創建數據庫
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的使用,請參考其他資料。
五、編譯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目錄下,這是數據庫驅動插件放置的目錄。如下圖所示。
六、測試MySQL程序
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數據庫部分的應用。