Qt編譯mysql以及建立表後進行匯入操作,qtmysql

來源:互聯網
上載者:User

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)

   


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.