【10】QT訪問mysql數(shù)據(jù)庫

QT支持很多不同的數(shù)據(jù)庫,包括:Sqlite, MySQL, SqlServer等等,QT里面提供了訪問這些數(shù)據(jù)庫的插件代碼,這使得我們可以很方便的訪問數(shù)據(jù)庫。
Qt 5 的 SDK 默認(rèn)提供了編譯好的 MySQL 驅(qū)動插件,位于 plugins/sqldrivers(Mac OS 下為 libqsqlmysql.dylib,Windows 下為 qsqlmysql.dll)。

準(zhǔn)備

首先下載好Mysql數(shù)據(jù)庫,在數(shù)據(jù)庫中建好一張用來測試的表,可以直接使用命令行來操作數(shù)據(jù)庫,也可以使用圖形化的管理軟件來進(jìn)行創(chuàng)建表。在這里直接使用命令行來進(jìn)行數(shù)據(jù)庫表的創(chuàng)建。

創(chuàng)建表

create table user(
        id int(11) not null primary key,
        usernaem varchar(20) not null,
        password varchar(20) not null
    );

插入數(shù)據(jù)

 insert into user values(
       1,
       'hello',
       '123456'
     ),
     (
       2,
       'world',
       '123456'
    );

準(zhǔn)備工作已經(jīng)做完了,接下來使用QT來編寫數(shù)據(jù)庫操作的代碼。首先創(chuàng)建一個控制臺的應(yīng)用程序,在pro文件中加入sql,這樣就可以使用數(shù)據(jù)庫了。

//main.cpp
#include <QCoreApplication>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>


void funcmysql()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "Connection_Name");
    db.setDatabaseName("qtread");
    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("");
    if (!db.open()) {
        qDebug() << "Connect to MySql error: " << db.lastError().text();
        return;
    }
    QSqlQuery query(db);
    query.exec("SELECT * FROM user");
    while (query.next()) {
        qDebug() << query.value("username").toString();
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    funcmysql();
    return a.exec();
}

按照以上代碼編寫完成之后,編譯運行發(fā)現(xiàn)了錯誤。錯誤信息是驅(qū)動未加載。

2017-05-28_232052.png

解決辦法:
將mysql數(shù)據(jù)庫lib文件夾中的libmysql.dll,libmysqld.dll復(fù)制到編譯成的exe文件中。

2017-05-28_234934.png

參考文章:
http://qtdebug.com/qtbook-db-mysql/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關(guān)于...
    SeanCST閱讀 8,120評論 0 27
  • 1.MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。My...
    黃花菜已涼閱讀 4,663評論 3 60
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序。每個數(shù)據(jù)庫具有一個或多個不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,140評論 0 19
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 看到維權(quán)騎士給我掃出來一片我的文,要么被其他人隨意轉(zhuǎn)載,要么被那些人直接盜走,我都不曉得說什么好。 此刻,我來談?wù)?..
    Super安淺淺閱讀 1,116評論 40 14

友情鏈接更多精彩內(nèi)容