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



該文章原創於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驅動。如下圖所示。
22-1.jpg


可以看到,主要分爲兩步,首先下載並安裝MySQL,在安裝時要使用Custom Install定製安裝,安裝上庫Libs和頭文件Include Files;然後是編譯,注意在編譯驅動前先添加上MySQL的庫和頭文件。



二、下載MySQL


1.我們先進入MySQL的主頁http://www.mysql.com/,然後點擊左上角的Downloads,如下圖所示。
22-2.jpg


2.然後進入該頁面最下面的MySQL Community Edition(GPL)鏈接,我們使用遵循GPL協議的開源版本。如下圖所示。
22-3.jpg


3.在新的頁面我們選擇左上角Downloads按鈕下面的Archives選項,從檔案中下載。如下圖所示。
22-4.jpg


4.在這個頁面我們選擇現在最新的MySQLDatabase Server 5.6版本。如下圖所示。
22-5.jpg


5.下面我們選擇按照平臺分類裏的MicrosoftWindows (34 files)。如下圖所示。
22-6.jpg


6.這裏我們下載最新版本的第二個鏈接MicrosoftWindows 32. (Windows Installer format) (1 Feb 2013, 35.5M),如下圖所示。

22-7.jpg


7.下載後的最終文件爲:mysql-5.6.10-win32(大家也可以下載我們上傳到網上的軟件包,因爲下面的操作只需要MyQSL的庫、頭文件以及最基本的功能,所以我們下載了該版本)



三、安裝MySQL


1.運行下載的安裝包,如下圖所示。
22-8.jpg


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

22-9.jpg


3.接着Next,下面我們選擇定製安裝Custom。如下圖所示。
22-10.jpg


4.這裏需要安裝所有的頭文件和庫,點擊Development Components前面的下拉箭頭,然後選擇第二項。如下圖所示。大家也可以看下右邊的說明。
22-11.jpg


5.然後選擇下面的Browse…來更改安裝路徑,這裏設置爲C:\MySQL\,如下圖所示。

22-12.jpg


6.填寫完路徑後點擊ok回到主頁面,點擊Next來到新的頁面,這裏選擇Install來進行安裝。如下圖所示。
22-13.jpg


7.等安裝完畢後,點擊Finish完成安裝。如下圖所示。
22-14.jpg



四、在MySQL中創建數據庫


1.下面我們先在安裝的MySQL中創建一個數據庫,用於後面的測試。首先到MyQSL的安裝目錄C:\MySQL\bin目錄下運行mysqld.exe程序,該程序運行完成後會自動關閉。如下圖所示。

22-15.jpg


2.Windows開始中點擊“運行”,然後輸入cmd,進入終端後我們輸入下面的命令:
cd C:\MySQL\bin
跳轉到安裝目錄下。如下圖所示。
22-16.jpg


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

mysql –uroot –p

我們使用root用戶來登陸MySQL,因爲默認密碼是空的,所以這裏不用設置密碼。運行這行代碼會提示Enterpassword,我們這時敲回車即可。如下圖所示。

22-17.jpg


4.登錄MySQL以後,我們使用下面的命令來查看現有的數據庫:

show databases

注意後面有個分號。如下圖所示。
22-18.jpg



可以看到,這裏現在已經有幾個數據庫了,他們是MySQL需要的。如下圖所示。

22-19.jpg


5.我們不使用已經有的數據庫,而是新建自己的數據庫,下面新建名爲mydata的數據庫:

create database mydata

如下圖所示。
22-20.jpg



6.我們再次查看已經存在的數據庫,發現顯示出了剛纔創建的數據庫,如下圖所示。
22-21.jpg



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

       這裏只是簡單介紹了一下在MySQL中創建數據庫的基本步驟,如果大家想學習更多的MySQL的使用,請參考其他資料。




五、編譯MySQL驅動


1.我們進入Qt安裝目錄的mysql源碼目錄中,具體路徑爲(這裏Qt安裝在了C盤):
C:\Qt\4.8.4\src\plugins\sqldrivers\mysql
如下圖所示。
22-22.jpg


2.我們使用Qt Creator打開裏面的mysql.pro項目文件。然後打開mysql.pro文件,在最下面添加下面兩行代碼:

INCLUDEPATH += C:/MySQL/include/
LIBS+= -LC:/MySQL/lib/ -llibmysql

       這樣便包含了MySQL的庫和頭文件。如下圖所示。
22-23.jpg

3.現在我們使用左下角的錘子 22-24.jpg 按鈕來構建項目。默認構建的是Debug版本,會在Qt目錄的mysql目錄的同層目錄裏面生成構建目錄,如下圖所示。
22-25.jpg



裏面的debug目錄裏有我們需要的qsqlmysqld4.dlllibqsqlmysqld4.a文件,不過它們只用於開發Debug版本的MySQL程序。如下圖所示。
22-26.jpg


4.爲了生成release庫,我們在Qt Creator中運行按鈕那裏設置爲編譯Release版本。如下圖所示。
22-27.jpg


5.下面再次按下錘子按鈕來編譯項目,就會生成“build-mysql-桌面-Release”樣式的構建目錄,裏面包含了發佈release版本程序需要的dll文件qsqlmysql4.dll


6.我們將生成的qsqlmysql4.dlllibqsqlmysql4.aqsqlmysqld4.dlllibqsqlmysqld4.a都複製到C:\Qt\4.8.4\plugins\sqldrivers目錄下,這是數據庫驅動插件放置的目錄。如下圖所示。
22-28.jpg



六、測試MySQL程序

1.新建Qt控制檯應用,名稱爲sqldrivers。完成後在pro文件中更改如下:
QT       += core   sql

2.更改main.cpp文件內容如下。
  1. #include <QCoreApplication>
  2. #include <QSqlDatabase>
  3. #include <QDebug>
  4. #include <QStringList>
  5. #include <QSqlQuery>

  6. int main(int argc, char *argv[])
  7. {
  8.     QCoreApplication a(argc, argv);
  9.     
  10.     // 輸出可用數據庫
  11.     qDebug() << "Available drivers:";
  12.     QStringList drivers = QSqlDatabase::drivers();
  13.     foreach(QString driver, drivers)
  14.         qDebug() << driver;
  15.     
  16.     // 打開MySQL
  17.     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  18.     db.setHostName("localhost");
  19.     db.setDatabaseName("mydata");
  20.     db.setUserName("root");
  21.     db.setPassword("");
  22.     if (!db.open())
  23.         qDebug() << "Failed to connect to root mysql admin";
  24.     else qDebug() << "open";
  25.     
  26.     QSqlQuery query(db);
  27.     
  28.     //注意這裏varchar一定要指定長度,不然會出錯
  29.     query.exec("create table student(id int primary key,name varchar(20))");
  30.     
  31.     query.exec("insert into student values(1,'xiaogang')");
  32.     query.exec("insert into student values(2,'xiaoming')");
  33.     query.exec("insert into student values(3,'xiaohong')");
  34.     
  35.     query.exec("select id,name from student where id >= 2");
  36.     
  37.     while(query.next())
  38.     {
  39.         int value0 = query.value(0).toInt();
  40.         QString value1 = query.value(1).toString();
  41.         qDebug() << value0 << value1 ;
  42.     }
  43.     
  44.     return a.exec();
  45. }
複製代碼
       這裏注意,創建表時varchar一定要指定長度。現在運行程序,會出現如下圖所示的結果:
22-29.jpg

這裏提示MySQL驅動沒有加載。


3.我們到C:\MySQL\lib中將libmysql.dll文件複製到C:\Qt\4.8.4\bin中,然後再次運行程序,發現已經成功了,如下圖所示。
22-30.jpg



結語

       Qt中編譯MySQL數據庫驅動的內容到這裏就介紹完了。從下一篇開始,我們將以SQLite數據庫爲範例來講解Qt數據庫部分的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章