Qt数据基本操作(基于mysql)

基本操作

1.检查你当前现有的数据库驱动里面有没有QMYSQL

QStringList list = QSqlDatabase::drivers();
qDebug() << list;//打印支持的sql驱动

2.连接你的数据库

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("f");				// 数据库名称
    db.setHostName("localhost");			// 主机名
    db.setUserName("你的用户名");			// 数据库,用户名
    db.setPassword("你的密码");				// 数据库,密码
    db.setPort(3306);						// 数据库,端口

3.判断打开数据库是否成功

//判断打开数据库是否成功
    if(!db.open()){
        qDebug()<<"QMYSQL link fail's cause:"<<db.lastError().text();
        return;
    }else{
        qDebug()<<"link success!!!";
    }

4.获取数据库中某个表的内容信息

f数据库中的fruit表为例
在这里插入图片描述

//获取数据库中某个表的内容信息
    QSqlQuery query;
    QString sql = "select * from fruit;";//在当前这个库中执行sql语句
    query.exec(sql);
    while(query.next())
    {
        //取出当前记录中的字段
        qDebug()<<query.value(0).toInt()<<":"
                <<query.value("name").toString()<<","
                <<query.value("price").toFloat()<<":"
                <<query.value("unit").toString();
    }

5.sql事务操作(只有在写操作时才有必要进行事务操作)

//sql事务操作(只有在写操作时才有必要进行事务操作)
    sql = "insert into fruit values(6,'芒果',5.6,'kg');";
    db.transaction();//创建事务
    bool flag = query.exec(sql);//exec()会执行SQL语句,如果是select语句,则执行结果会放在query中
    if(flag)//如果sql执行成功就,
    {
        db.commit();//提交事务
    }else{//如果sql执行失败就,
        db.rollback();//事务回滚
    }

6.关闭数据库

//数据库操作结束后,记得关闭
    db.close();

完整代码

在这里插入图片描述

DBTest.pro

QT       += core gui sql

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QSqlQuery>

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

    QStringList list = QSqlDatabase::drivers();
    qDebug() << list;//打印支持的sql驱动

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("f");				// 数据库名称
    db.setHostName("localhost");			// 主机名
    db.setUserName("你的用户名");			// 数据库,用户名
    db.setPassword("你的密码");				// 数据库,密码
    db.setPort(3306);						// 数据库,端口

    //判断打开数据库是否成功
    if(!db.open()){
        qDebug()<<"QMYSQL link fail's cause:"<<db.lastError().text();
        return;
    }else{
        qDebug()<<"link success!!!";
    }

    //获取数据库中某个表的内容信息
    QSqlQuery query;
    QString sql = "select * from fruit;";//在当前这个库中执行sql语句
    query.exec(sql);
    while(query.next())
    {
        //取出当前记录中的字段
        qDebug()<<query.value(0).toInt()<<":"
                <<query.value("name").toString()<<","
                <<query.value("price").toFloat()<<":"
                <<query.value("unit").toString();
    }
    qDebug()<<"=================";

    //sql事务操作(只有在写操作时才有必要进行事务操作)
    sql = "insert into fruit values(6,'芒果',5.6,'kg');";
    db.transaction();//创建事务
    bool flag = query.exec(sql);//执行SQL语句,执行结果放在query中
    if(flag)//如果sql执行成功就,
    {
        db.commit();//提交事务
    }else{//如果sql执行失败就,
        db.rollback();//事务回滚
    }

    //再查询一次
    sql="select * from fruit;";
    query.exec(sql);
    while(query.next())
    {
        //取出当前记录中的字段
        qDebug()<<query.value(0).toInt()<<":"
                <<query.value("name").toString()<<","
                <<query.value("price").toFloat()<<":"
                <<query.value("unit").toString();
    }


    //数据库操作结束后,记得关闭
    db.close();

}

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


执行结果:

("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
link success!!!
1 : "苹果" , 5.5 : "kg"
2 : "橘子" , 6.5 : "kg"
3 : "榴莲" , 9.6 : "kg"
4 : "菠萝" , 5.5 : "kg"
5 : "荔枝" , 9.6 : "kg"
=================
1 : "苹果" , 5.5 : "kg"
2 : "橘子" , 6.5 : "kg"
3 : "榴莲" , 9.6 : "kg"
4 : "菠萝" , 5.5 : "kg"
5 : "荔枝" , 9.6 : "kg"
6 : "芒果" , 5.6 : "kg"

在这里插入图片描述


版权声明:本文为weixin_52668597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。