1. 程式人生 > >QT與MYSQL的連線

QT與MYSQL的連線

接上一篇所講,我們已經安裝好MYSQL5.6並且配置好了環境變數,這篇我將介紹如何通過QT使用MYSQL

QT連線MYSQL

  1. 首先建立專案,在.pro檔案中新增程式碼 在這裡插入圖片描述
QT +=sql

例如:我加在了最後 在這裡插入圖片描述

程式碼

程式碼註釋夠詳細了,我就不過多贅述了,有疑問可以在最下方留言哦! .h檔案

#include <QSqlDatabase>

    void connectMYSQL();
    void createDB();
    void initDB();

    QSqlDatabase database;

.cpp檔案

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connectMYSQL();
    createDB();
    initDB();

    QSqlQuery query(database);
    query.exec("select * from Student");
    while(query.next())
    {
        qDebug()<<query.value(0).toString()<<query.value(1).toString()<<query.value(2).toString()
                  <<query.value(3).toString()<<query.value(4).toString()<<query.value(5).toString();

    }
}

//連線資料庫
void MainWindow::connectMYSQL()
{
    if (QSqlDatabase::contains("testConnect"))//判斷testConnect連線是否存在並連線
    {
        database = QSqlDatabase::database("testConnect");
    }
    else //未連線則新建資料庫連線
    {
        database=QSqlDatabase::addDatabase("QMYSQL","testConnect");//建立資料庫連線,併為其命名testConnect
        database.setHostName("127.0.0.1");      //連線資料庫主機名,這裡需要注意(若填的為”127.0.0.1“,出現不能連線,則改為localhost)
        database.setPort(3306);                 //連線資料庫埠號,與設定一致
        database.setUserName("root");          //資料庫使用者名稱,與設定一致
        database.setPassword("88888888");    //資料庫密碼,與設定一致
    }
    if(!database.open())
    {
        qDebug()<<"fail to connect mysql:"<<database.lastError().text();
        return;
    }
}

//建立資料庫、資料表
void MainWindow::createDB()
{
    QString querystring;
    //建立資料庫
    database = QSqlDatabase::database("testConnect");
    querystring = "CREATE DATABASE IF NOT EXISTS student_info";
    database.exec(querystring);
    if (database.lastError().isValid())
    {
        qDebug()<<"Create database failed."<<database.lastError();
        return;
    }


    //建立資料表student
    database.setDatabaseName("student_info");
    if(!database.open())
    {
        qDebug()<<"database open failed";
        return;
    }
    
    querystring =
            "CREATE TABLE IF NOT EXISTS student_info.Student\
            (\
                Name varchar(20),\
                NO varchar(20) primary key,\
                Sex varchar(20),\
                Tell varchar(20),\
                Address varchar(30), \
                Hobbies varchar(30)\
                )";
            database.exec(querystring);//執行建立資料表語句
    if (database.lastError().isValid())
    {
        qDebug()<<"Student table creat failed:" << database.lastError();
        return;
    }

    //支援中文
    database.exec("alter table Student convert to character set utf8");

}

//初始化資料庫(新增原始值)
void MainWindow::initDB()
{
    QSqlQuery query(database);
    query.exec("insert into Student values('張三', '2018010235', '男','12116588966','北京市朝陽區幸福小區12#103','籃球,游泳')");
    query.exec("insert into Student values('李四', '2018020156', '男','15665487200','湖南省長沙市嶽麓區開心小區9#602','足球')");
    query.exec("insert into Student values('靈兒', '2018020202', '女','10202020202','江蘇省南京市玄武區愛情公寓2#202','Dota')");
    if(!query.exec())
    {
        qDebug() << "Error: Fail to insert ." << query.lastError();

    }

}

執行結果

在這裡插入圖片描述

福利

推薦一款軟體Navicat for MySQL,我們可以直接從中檢視、編輯資料庫哦,具體的安裝和使用,我將在下一篇《Navicat for MySQL》中介紹,敬請關注 在這裡插入圖片描述