首先,須要明確編譯的目的和原理。
目的:Qt 5.2版本號曾經都是不帶mysql驅動的。所以須要進行編譯mysql數據庫驅動,僅僅有編譯完畢后才干被Qt載入上。假設你安裝的是Qt5.2以后版本號的,那就不須要了,由於在后來的版本號中,Qt官方添加這一模塊。
能夠在Qt的安裝插件文件夾下查看自己的驅動是否已經存在。
比如我的在文件夾:
C:\Qt\4.8.2\plugins\sqldrivers。能夠看到當前的數據庫驅動
一般須要兩個即可了。
原理:先看命令:qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\libmysql.lib" mysql.pro
解釋:qmake---是Qt中國的一種編譯命令,在linux下編程時常常會用到make命令。詳情能夠百度;INCLUDEPATH----后面的路徑是數據庫中"include"和"lib"的文件夾。
為什么要將這兩個文件復制一份考到其它盤?那是由於mysql在安裝的時候默認安裝路徑中有空格,這在編譯過程中是無法通過的,不信的同學能夠試一下,不行的話在考到其它盤里面;最后面的mysql.pro---這個是Qt的project文件,每一個Qtproject建立后都會生成一個以.pro結尾的文件,以后打開Qtproject的時候就雙擊你要打開的.pro結尾的哪個文件。整個project就打開了。
可能我上面的解釋也沒有解釋清楚大概就是哪個意思。
以下說說詳細的過程:
細心的同學就會發現,qmake.自己編譯時會出現這個問題:
'qmake' 不是內部或外部命令,也不是可執行的程序或批處理文件
原因:沒有給Qt配置環境變量
解決的方法:找到Qt的安裝文件夾,我的文件夾在這兒:
找到這個文件夾下的這個東西,看見了吧qmake
找不到的話能夠這樣做:單擊桌面Qt程序右鍵,打開文件路徑:
右擊打開我的電腦----點擊屬性---高級系統設置-----環境變量----找到path項---編輯
至此,其它的幾個文件夾頁這樣配置。在此就不再反復了。
當然最簡單最直接的是,不用配置。
直接用Qt自帶的command進行編譯。打開開始菜單,找到Qt comman窗口。
比方我的是這個:
進入到Qt的源代碼文件夾下的插件文件夾--驅動文件夾---數據庫文件夾。注意這個編譯的是源代碼。然后輸入開始介紹的哪一行文件夾---按回車。
之后非常多同學都說沒有反應,那就對了,這一步的目的是為了下一步編譯做准備,會生成makefile文件。
由於用的是mingw編譯器,所以用mingw32-make命令編譯,假設你用的是vs的,那就用nmake編譯。
直接輸入命令mingw32-make----回車。
假設沒有錯誤。這個過程大概須要幾十秒鍾。接着進行安裝:輸入命令:mingw32-make install.能夠將生成的插件考入相應Qt的文件夾。
你能夠查看下驅動文件夾師是否存在qsqlmysql.dll和libqsqlmysql4.a這兩個文件,一般編譯成功后就會有的。
此時編敲代碼會發現,還是沒有發現mysql驅動。
缺少引導文件。在考一個文件
就是之前你復制的那兩個文件。在lib下有個libmysql.dll文件
將其拷貝到Qt的啟動文件夾。跟前面打開方法一樣,在桌面鼠標右擊Qt的圖標,打開文件位置,然后粘貼進去進行。
至此。mysql編譯任務完畢。
那怎么知道自己的配置是否成功了呢,最簡單的就是寫個簡單的程序檢測下。
建立一個QtGui Qpplicationproject。注意包括sql模塊(假設沒有包括,建完project后能夠自project中加入,不用操心)。一下是一個簡單的測試程序:
須要加入的頭文件:#include <QSqlDatabase> #include <QDebug>
qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t "<< driver; qDebug() << "End";把上面的程序寫到main函數中就可以。
若是配置成功,則在窗體以下會輸出一下信息:
看見上面的QMYSQL了吧,說明已經檢測到了mysql數據庫驅動了。如今能夠進行后面的操作了。
首先,為了進行連接數據庫。必須創建數據庫和數據表,怎么創建呢?這個原理還和大家熟知的sqlserver一樣,僅僅只是,略微有點差別,可能是命令大家還不熟悉,隨意新建一個文本文件,進行編輯:利用sql語句進行創建表,就創建一個簡單的學生表吧。
輸入一下sql語句:
注意輸入完畢后保存文件。文件的后綴是.sql !!!
。。
下一步是關鍵的時候,進行導入數據表。
依照上面的命令:show databses;---回車。就可以看見當前的數據庫名稱。接下來創建數據庫--這和我們在sqlserver中學的一樣。
create databses mydatabse;
運行導入命令。將之前寫好的創建數據表導入數據庫中---
此次,完畢了主要的任務,在這里僅僅是創建了簡單的一張表,能夠依據你的須要自行創建數據表。
注:在運行source命令之前不許使用數據庫。也就是說,你必須指定你要為哪個數據庫導入表。
完畢后,相同的方法,插入數據,也是在一個網文本文件里寫好插入數據命令,然后運行導入命令.
以上步驟完畢后。可以進行一個簡單的連接數據庫測試,檢測是否可以連接上。
#include <QApplication> #include "widget.h" #include <QMessageBox> #include <QSqlError> #include <QTextCodec> bool creatconnect() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setPort(3306); db.setDatabaseName("student"); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open();//建立數據庫連接 if(!ok) { QMessageBox::critical(0,QObject::tr("連接數據庫失敗!點擊Run(執行)能夠看見:!
!
"),db.lastError().text()); return false; } else { QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("連接數據庫成功。。!
")); return true; } } int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec *codec = QTextCodec::codecForName("GB2312"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); if(!creatconnect()) { return 1; } Widget w; w.show(); return a.exec(); }
能夠看見查詢的數據。
至此,全部簡單的編譯測試工作已經完畢了。
小伙伴們,快去試試你們的Qt和mysql吧。
測試project文件我已經上傳了,大家能夠下載源代碼。
http://download.csdn.net/detail/u013704336/8278693
以上內容。純屬個人理解,若有不論什么問題,歡迎大家指出,共同學習。(creaazylq@163.com)