Qt数据基本操作(基于mysql)
创始人
2025-05-30 01:55:23
0

Qt数据基本操作

  • 基本操作
    • 1.检查你当前现有的数据库驱动里面有没有QMYSQL
    • 2.连接你的数据库
    • 3.判断打开数据库是否成功
    • 4.获取数据库中某个表的内容信息
    • 5.sql事务操作(只有在写操作时才有必要进行事务操作)
    • 6.关闭数据库
  • 完整代码
    • DBTest.pro
    • mainwindow.h
    • main.cpp
    • mainwindow.cpp
  • 执行结果:

基本操作

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:"<qDebug()<<"link success!!!";}

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

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

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

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 QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include 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 
#include 
#include 
#include 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:"<qDebug()<<"link success!!!";}//获取数据库中某个表的内容信息QSqlQuery query;QString sql = "select * from fruit;";//在当前这个库中执行sql语句query.exec(sql);while(query.next()){//取出当前记录中的字段qDebug()<db.commit();//提交事务}else{//如果sql执行失败就,db.rollback();//事务回滚}//再查询一次sql="select * from fruit;";query.exec(sql);while(query.next()){//取出当前记录中的字段qDebug()<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"

在这里插入图片描述

相关内容

热门资讯

动态要闻 | 京师珠海律师参加... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 珠江潮涌,前海扬帆。2025年6...
国统股份:部分诉讼案件处于开庭... 金融界6月17日消息,有投资者在互动平台向国统股份提问:公司诉讼的几个工程回款进度有什么进展? 公司...
制度创新引领 科创板助硬科技企... 毛艺融 科创板公司再融资项目迎来新进展。上交所官网显示,6月份以来截至6月16日记者发稿,已有7家科...
联创电子:本届董事会任期三年,... 金融界6月17日消息,有投资者在互动平台向联创电子提问:尊敬的董秘,您好!根据公开资料显示,贵公司董...
开润股份:如有相关事项,公司会... 证券之星消息,开润股份(300577)06月16日在投资者关系平台上答复投资者关心的问题。 投资者提...
东方中科:一直关注新兴产业政策... 金融界6月17日消息,有投资者在互动平台向东方中科提问:最近香港稳定币立法,公司可以积极布局稳定币在...
吴晓求:以制度引领价值重构 构建制度文明,为经济增长夯实战略性支点 中国制造业规模在全世界的占比突破30%的历史性关口,标志着中...
江西一市民质疑:公立医生帮联系... 潮新闻客户端 记者 商泽阳 6月16日,江西的唐先生向潮新闻“记者帮”反映,今年4月,他将身患重症的...
联创电子:因《保障中小企业款项... 证券之星消息,联创电子(002036)06月16日在投资者关系平台上答复投资者关心的问题。 投资者提...
伊朗国家电视台台长:电视台遭到... 本文转自【@CCTV国际时讯】; 伊朗国家电视台台长当地时间6月16日晚发表声明,称电视台遭到以军残...