Qt編譯mysql以及建立表後進行匯入操作,qtmysql
鑒於許多同學對Qt編譯myql總是不能成功,出現各種問題,今天特此寫出本教程,希望能夠幫到需要的同學。
首先,需要明白編譯的目的和原理。
目的: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的工程檔案,每個Qt工程建立後都會產生一個以.pro結尾的檔案,以後開啟Qt工程的時候就雙擊你要開啟的.pro結尾的哪個檔案,整個工程就開啟了。
可能我上面的解釋也沒有解釋清楚大概就是哪個意思。
下面說說具體的過程:
細心的同學就會發現,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 Qpplication工程。注意包含sql模組(如果沒有包含,建完工程後可以自工程中添加,不用擔心)。一下是一個簡單的測試程式:
需要添加的標頭檔:#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("串連資料庫失敗!!!"),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();}
點擊Run(運行)可以看見:
可以看見查詢的資料。
至此,所有簡單的編譯測試工作已經完成了。小夥伴們,快去試試你們的Qt和mysql吧。
測試工程檔案我已經上傳了,大家可以下載源碼。
http://download.csdn.net/detail/u013704336/8278693
以上內容,純屬個人理解,若有任何問題,歡迎大家指出,共同學習。(creaazylq@163.com)