关于Qt的CRUD增删改查数据库那些事,带GUI图像界面

首先感谢CSDN平台提供这样强大的分享平台.
Qt Creator 的几个常用快捷键必须要会,开发事半功倍,
Ctrl 简称 C
C + i 先 C + A再C + i 格式化代码
F4 头文件与源文件互相切换
F1获取帮助的
C + alt + 向下箭头 , 快速复制当前行代码,跟Ec用法一样
C + Shift + 向下箭头或向上箭头, 快速移动当前行代码,跟Intellij idea快捷键 一样
Shift + Delete 快速删除当前行代码,跟Intellij idea快捷键 一样
直接先写类,头文件包含,让编辑器自动给你创建 Alt + Enter ,跟Intellij idea快捷键 一样
C+ F 查找,跟Ec用法一样
C+B 编译
C + R 运行
个人感觉QT Creator的提示功能不够强大,对变量的提示不强大,对类的提示反应慢,之前有想过尝试用VStadio 2017 或者CLion编译器,但是QtCreator 原汁原味,它对UI设计很方便,无可否认,返回值类型和参数自己写,java可以自动生成返回值类型,给你一个推荐的变量名,类型提示强大,变量提示强大,Qt 对代码的报错感觉也没有java精准,java能够精确到某一行. Qt报错,有时候不会提示.
Qt的版本不要装的高,也不要低,高了你驾驭不了,对于初学者,低了跟不上时代,
目前最高版本5.14,低的版本2010左右发行的4.6.1 ,那时候还属于Nokia公司,后来转让给Digia,
本人使用的是较为保守的版本 5.9.9, mysql 5.7.18-log
必须能打印的这样的一句话,否则其他都不要继续下去了

("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")

能够看到 QMYSQL
首先画UI界面

我说一下布局,姓名和lineEdit 首先水平布局,其他类似,右边纵列的几个功能键,ctrl按住,选中那几个按钮,进行竖直布局,选中整个Widget进行 栅格布局,想自适应,弄几个弹簧,就可以自适应了。
数据库的建表语句

create table stu (
id int(10) primary key auto_increment,
`name` varchar(255),
`stuid` bigint,
score double
)
select * from stu;
insert into stu value(NULL,'大军',20141111088,99.5);
insert into stu value(NULL,'大刀',20141111011,88.4);
insert into stu value(NULL,'小红',20141111088,94.3);
insert into stu value(NULL,'小刘',20141111077,92.4);
delete from stu where id = 2;

选择UI界面,选中按钮,右击,转到槽,找到click事件,单击,槽函数自动给你创建好
其他的类似,qDebug一定用起来,打印信息的
核心代码如下

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlError>
#include <QMessageBox>
#include <QSqlQuery>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")qDebug() << QSqlDatabase::drivers();QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");db.setHostName("localhost");db.setPort(3306);db.setUserName("root");db.setPassword("root");db.setDatabaseName("demo");if(!db.open()){QMessageBox::warning(this,"错误",db.lastError().text());}QSqlQuery qu;QString str = "select * from user";qu.exec(str);while(qu.next()){qDebug() << qu.value(1).toString();qDebug() << qu.value(2).toInt();qDebug() << qu.value(3).toString();qDebug() << qu.value(4).toString();}
}
Widget::~Widget()
{delete ui;
}void Widget::on_pushButtonAdd_clicked()
{QString name=ui->lineEditName->text();int stuId = ui->lineEditStuId->text().toInt();double score = ui->lineEditScore->text().toDouble();QString sql = QString("insert into stu values(NULL,'%1', '%2', '%3')").arg(name).arg(stuId).arg(score);QSqlQuery query;//非空校验 防止空指针异常if(name.isEmpty()){QMessageBox::warning(this,"error","请填写姓名!");return;}qDebug() << stuId;qDebug() << score;if(stuId==0){QMessageBox::warning(this,"error","请填写学号!");return;}if(score==0){QMessageBox::warning(this,"error","请填写成绩!");return;}bool b = query.exec(sql);qDebug() << b;if(b){ui->textEditArea->setText("数据插入成功");QMessageBox::information(this,"success","数据插入成功");}else {ui->textEditArea->setText("数据插入失败");QMessageBox::information(this,"success",query.lastError().text());}
}void Widget::on_pushButtonDele_clicked()
{QString name = ui->lineEditName->text();//从行编辑框中获取需要删除的人名if(name.isEmpty()){QMessageBox::warning(this,"error","请填写姓名!");return;}QSqlQuery query;QString str =  QString("delete from stu where name = '%1'").arg(name);bool s= query.exec(str);qDebug() << s <<"bbb";if(s){ui->textEditArea->setText("删除成功");QMessageBox::information(this,"success",QString("%1数据删除成功").arg(name));ui->lineEditName->setText("");}else{QMessageBox::warning(this,"success",QString("%1数据删除失败").arg(name));ui->lineEditName->setText("");}
}void Widget::on_pushButtonModify_clicked()
{//从界面获取我们需要的信息QSqlQuery query;QString updatename = ui->lineEditName->text();long number = ui->lineEditStuId->text().toLong();double score = ui->lineEditScore->text().toDouble();QString temp = QString("update stu set stuid = '%1' , score = '%2' where name = '%3'").arg(number).arg(score).arg(updatename);query.exec(temp);//执行修改信息的操作ui->textEditArea->setText("修改成功");
}void Widget::on_pushButtonFind_clicked()
{QString searchname = ui->lineEditName->text();if(searchname == NULL){ui->textEditArea->setText("请输入需要查询的人名");}else{//从数据库中查询是否有这么一个人QString str = QString("select * from stu where name = '%1'").arg(searchname);QSqlQuery query;query.exec(str);QString name;int number;double score;while (query.next()){number = query.value(0).toInt();name = query.value(1).toString();score =  query.value(2).toDouble();}if(name == NULL){QString a = QString("没有叫%1的人,请重新输入人名").arg(searchname);ui->textEditArea->setText(a);ui->lineEditName->clear();ui->lineEditStuId->clear();ui->lineEditScore->clear();}else{ui->lineEditName->setText(name);ui->lineEditStuId->setText(QString().setNum(number));ui->lineEditScore->setText(QString().setNum(score));ui->textEditArea->setText("查询成功");}}
}void Widget::on_pushButtonFindAll_clicked()
{QString name[100];//用来存储从数据库中找出来的信息int number[100];double score[100];int i = 0;QSqlQuery query;query.exec("select * from stu");//查询所有的信息while(query.next()){number[i] = query.value(0).toInt();name[i] = query.value(1).toString();score[i] = query.value(2).toDouble();i++;}ui->textEditArea->clear();int j = 0;for(j = 0; j < i; j++)//将这些信息都显示在下方的文本编辑框中{QString str = QString("学号:%1   姓名:%2  成绩:%3").arg(number[j]).arg(name[j]).arg(score[j]);ui->textEditArea->append(str);}
}

关于Qt的CRUD增删改查数据库那些事,带GUI图像界面相关推荐

  1. 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...

  2. 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接 ...

  3. java增删改查实例源码_Spring Data JPA 实现简单的CRUD增删改查源码案例

    Spring专题 Spring Data JPA 实现简单的CRUD增删改查源码案例 Spring Data JPA旨在简化JPA基础知识库构建和减少需要与数据库进行通信的代码量.第一部分是如何配置H ...

  4. node ajax crud,基于node.js和rethinkdb的CRUD(增删改查)Web服务

    基于node.js和rethinkdb的CRUD(增删改查)Web服务 这是一个简单的REST web服务演示案例源码,使用Node.JS和Express 和RethinkDB,后者持久化JSON数据 ...

  5. MyBatisPlus之CRUD增删改查以及分页

    MyBatisPlus之CRUD增删改查以及分页 1.CRUD详解之插入操作 环境测试,在之前的itcast-mp-springboot项目工程里面使用springboot来进行 编写用户测试类 /* ...

  6. 三、CRUD(增删改查)

    三.CRUD(增删改查) 3.1.namespace ​ namespace中的包名需要和mapper接口的包名一致! 1. id:就是对应的namespace中的方法名:2. resultType: ...

  7. Mybatis_第二节:CRUD(增删改查)

    _ ***配套文档:***↓↓↓ mybatis – MyBatis 3 | 简介 二.CRUD(增删改查) 实现功能需要改变的文件(接第一节结尾处) UserMapeer.java接口 UserMa ...

  8. PHP增删改查数据库(前端+后台)

    PHP增删改查数据库(前端+后台) 要求: 首页导航栏中内置功能 查看数据库 点击Edit修改数据库内容 点击Delete后删除数据库内此记录,返回首页输出删除成功. 向数据库里增加数据 向搜索框输入 ...

  9. 使用LitePal操作数据库(CRUD增删改查) 项目已上传GitHub

    GitHub项目地址: https://github.com/Skymqq/LitePalSave.git LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)映射的模式 ...

最新文章

  1. scikit CountVectorizer源码
  2. BitNami一键安装Redmine
  3. Codeforces Round #556 (Div. 1)
  4. LeetCode MySQL 1308. 不同性别每日分数总计(累加/变量/窗口函数)
  5. 02 | 日志系统:一条SQL更新语句是如何执行的? 笔记(转)
  6. python查找指定字符所在行号_在python中获取当前位置所在的行号和函数名
  7. int 转换成 string 四种方法你们喜欢用那种呢?
  8. unity打开excel表格_Excel电子表格需要双击两次才能打开问题的解决方案
  9. 目录_计算机视觉中的数学方法
  10. 带你了解强大的Cadence家族,你可能只用到了它1/10的工具
  11. Python处理Excel数据的方法
  12. vue的UI框架之有赞移动端vant-ui
  13. ios安装app提示【未受信任的企业级开发者】。在设置中信任此开发者
  14. Windows安装pytorch,傻瓜式教程
  15. 云服务器安装frps实现内网穿透
  16. c语言 快排,C语言 快排函数
  17. 混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
  18. 查询数据库中所有表的记录数
  19. VMware虚拟机拷贝mac冲突解决方法(及软件安装)
  20. 重新回头学习归纳ES6的知识点-------promise(承诺)

热门文章

  1. 前端接收pdf文件_雷达接收机的噪声系统及灵敏度
  2. uniapp点击图片放大_想要放大镜将图片放大的效果?你只需这么做即可!
  3. 关于硕士研究生的几点思考
  4. FPGA车牌数字识别系统设计verilog实现(带上板录制视频)
  5. 五子棋游戏设计VHDL语言
  6. 我的世界java版记分板_我的世界计分板教程 计分板指令详解
  7. 上去了server查所有表空间_oracle如何查看表空间
  8. ssm上传文件进度条_ssm学习笔记-三种文件上传方式
  9. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)
  10. python_装饰器