数据库学习_QT+MYSQL

Posted Leslie X徐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库学习_QT+MYSQL相关的知识,希望对你有一定的参考价值。

QT+sql 链接

sql链接和操作

完整的一个QT+SQL操作步骤:
1. 输入登陆信息进行登陆
2. 使用QSqlQuery进行操作
3. 准备执行指令
4. 执行指令
5. 获取结果

".pro"加入:

QT       += sql

main文件:

#include "widget.h"
#include <QApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    //登陆
    QSqlDatabase db = QSqlDatabase::addDatabase("Qmysql");
    db.setPassword("xwh1995");
    db.setDatabaseName("mysqldata");
    if(db.open()==false){
        qDebug() << db.lastError().text();
    }else {
        qDebug() << "open success";
    }

    //执行指令:select * from tb_stu;
    //1.准备指令
    QSqlQuery query;
    query.prepare("select * from tb_stu;");

    //2.执行指令
    if(query.exec()==false){
        qDebug() << db.lastError().text();
    }else {
        //3.获取结果
        //next为每下一行,value(0)为行首列
        while (query.next()) {
            int id = query.value(0).toInt();
            QString name = query.value(1).toString();
            qDebug() << id << ' ' << name;
        }
    }

    return a.exec();
}

加上界面显示的示例

在这里插入图片描述

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <QDebug>
#include <QListWidgetItem>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_btn_log_clicked();

    void on_btn_show_clicked();

    void on_exit_clicked();

    void on_btn_sort_clicked();

private:
    Ui::Widget *ui;
    QSqlDatabase db;
    QListWidgetItem* aItem;
};

#endif // WIDGET_H

使用ListWidget输出dataBase的数据
widget.cpp:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget),
    aItem(nullptr)
{
    ui->setupUi(this);
    db = QSqlDatabase::addDatabase("QMYSQL");
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_btn_log_clicked()
{
    db.setPassword("xwh1995");
    db.setDatabaseName("mysqldata");
    if(db.open()==false){
        qDebug() << db.lastError().text();
    }else {
        qDebug() << "open success";
    }
}

void Widget::on_btn_show_clicked()
{
    ui->listWidget->clear();

    aItem = new QListWidgetItem("id\\tname\\tsex\\tscore");
    ui->listWidget->addItem(aItem);

    //执行指令:select * from tb_stu;
    //1.准备指令
    QSqlQuery query;
    query.prepare("select * from tb_stu;");

    //2.执行指令
    if(query.exec()==false){
        qDebug() << db.lastError().text();
    }else {
        //3.获取结果
        //next为每下一行,value(0)为行首列数据
        while (query.next()) {
            QString info = query.value(0).toString()
                            + "\\t" + query.value(1).toString()
                            + "\\t" + query.value(2).toString()
                            + "\\t" + query.value(3).toString();
            qDebug() << info;

            aItem = new QListWidgetItem(info);
            ui->listWidget->addItem(aItem);
        }
    }
}

void Widget::on_btn_sort_clicked()
{
    ui->listWidget->clear();

    aItem = new QListWidgetItem("id\\tname\\tsex\\tscore");
    ui->listWidget->addItem(aItem);

    //执行指令:select * from tb_stu order by degree desc;
    //1.准备指令
    QSqlQuery query1;
    query1.prepare("select * from tb_stu order by degree desc;");

    //2.执行指令
    if(query1.exec()==false){
        qDebug() << db.lastError().text();
    }else {
        //3.获取结果
        //next为每下一行,value(0)为行首列数据
        while (query1.next()) {
            QString info1 = query1.value(0).toString()
                            + "\\t" + query1.value(1).toString()
                            + "\\t" + query1.value(2).toString()
                            + "\\t" + query1.value(3).toString();
            qDebug() << info1;

            aItem = new QListWidgetItem(info1);
            ui->listWidget->addItem(aItem);
        }
    }
}

void Widget::on_exit_clicked()
{
    db.close();
    this->close();
}

以上是关于数据库学习_QT+MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

Qt (Creator) 与 WinSocks (ws2_32)

QT学习_QT远程文件升级

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

QT学习之路-QT服务器-mysql数据库相关问题集锦

QT学习笔记(16) QT5的数据库操作

中标麒麟+Qt+mysql解决驱动无法加载的问题