Qt学习(十):QT连接mysql(增加、删除、遍历)
知识点
- Qt连接数据库
- 数据库的插入+删除+遍历
- 数据库的批量插入
完整项目github地址:
https://github.com/taw19960426/Qt_study/tree/main/DataBase
结果演示
问题解决
连接数据库后,执行命令以后,数据库里面没有相应的结果,打印后错误是:QSqlError(“2036”, “QMYSQL3: Unable to bind value”, "Using unsupported buffer
原因:
之前我安装的libmysql.dll与版本不兼容
解决办法:将上面github项目文件下的libmysql.dll复制到Qt的安装目录bin文件夹下
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariantList>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//打印Qt支持的数据库驱动qDebug() << QSqlDatabase::drivers();//添加MySql数据库QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1"); //数据库服务器IPdb.setUserName("root"); //数据库用户名db.setPassword("qaz12580"); //密码db.setDatabaseName("info"); //使用哪个数据库//打开数据库if( !db.open() ) //数据库打开失败{QMessageBox::warning(this, "错误", db.lastError().text());return;}//创建表QSqlQuery query;
// query.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int);");// //插入
// //query.exec("insert into student(id, name, age, score) values(1, 'xiaoMing', 18, 59);");// //批量插入
// //oracle风格
// //占位符 : + 自定义名字
// query.prepare("insert into student(name, age, score) values(:name, :age, :score)");
// //给字段设置内容 list
// QVariantList nameList;
// nameList << "xiaod" << "xiaoe" << "xiaof";
// QVariantList ageList;
// ageList << 13 << 16 << 45;
// QVariantList scoreList;
// scoreList << 85 << 16 << 66;
// //给字段绑定
// query.bindValue(":name",nameList);
// query.bindValue(":age",ageList);
// query.bindValue(":score",scoreList);// //执行预处理命令
// if(!query.execBatch()){// qDebug() << query.lastError();
// }//遍历数据库query.exec("select * from student");while(query.next()){//一行一行遍历qDebug() << query.value(0).toInt()<< query.value(1).toString()<< query.value("age").toInt()<< query.value("score").toInt();}}Widget::~Widget()
{delete ui;
}void Widget::on_buttonDel_clicked()
{//获取编辑器内容QString name=ui->lineEdit->text();QString del=QString("delete from student where name = '%1';").arg(name);//开启一个事务QSqlDatabase::database().transaction();QSqlQuery query;query.exec(del);
}void Widget::on_buttonQueDing_clicked()
{//确定删除QSqlDatabase::database().commit();
}void Widget::on_buttonQuXiao_clicked()
{//撤销删除QSqlDatabase::database().rollback();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_buttonDel_clicked();
void on_buttonQueDing_clicked();void on_buttonQuXiao_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
Qt学习(十):QT连接mysql(增加、删除、遍历)相关推荐
- Qt学习之Qt基础入门(下)
1. 前言 前两篇博客简单的阐述了一下Qt的入门用法,这篇博客继续跟着视频学习. Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) ...
- Qt学习之Qt基础入门(中)
1. 前言 上一篇博客,总结了Qt的一些基础用法,这篇博客继续跟视频学习Qt的常用方法 Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门( ...
- C#学习笔记----C#连接MySQL数据库
C#学习笔记----C#连接MySQL数据库 using System.Linq; using System.Text; using System.Data;// 引用表的命名空间 using Sys ...
- linux qt 添加动态链接库_Qt 连接MySql数据库
Qt默认是不含Mysql驱动的,所以我们需要手工编译Mysql动态链接库,以Win平台举例. 前期准备 下载mysql 数据库 qt5.13.1使用的是mysql-5.7.25,其他版本没有测试 下载 ...
- 嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板
想要把qt工程放到开发板上运行,就需要用到交叉编译.由于qt是跨平台的,所以只需要换个编译器编译一下就可以. 以qt学习–计时器的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时 ...
- java编程连接mysql_Java编程学习之JDBC连接MySQL
JDBC连接MySQL 一.对JDBC连接数据库的步骤 1.加载数据库驱动 //加载驱动 Class.forName(driverClass) ---------------------------- ...
- C++后续:QT学习(Qt概述,创建QT项目)
目录 声明 一. Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt支持的平台 1.4 Qt版本 1.5 Qt的下载与安装 1.6 Qt的优点 二.创建 Qt项目 2.1 如何创建 2. ...
- Qt 学习(三) —— Qt 模块
1. Qt 模块简介 Qt由许多模块组成,分别支持不同领域的功能,主要分为 Essentials 和 Add-On. Qt Essential 是基本模块,它们可以在所有受支持的开发平台和经过测试的目 ...
- QT通过ODBC远程连接MySQL数据库
第一步用:SQLyogC测试看看是否能连接上,如果都不能连接上谈何qt远程. 第二步:骤下载并安装mysqlODBCQ驱动 ,安装过程一直点击下一步骤就可以了https://pan.baidu.com ...
最新文章
- lighttpd 负载均衡-反向代理+cache浅谈
- iOS根据Debug和Release状态的变化来屏蔽日志输出
- center6linux ip设置,centos6固定ip地址
- 浅析网站SEO优化中导航优化的四大技巧!
- python with open as yaml_python怎么解析yaml文件?
- goroutine 那些事
- Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)
- 31.水平居中总结-不定宽块状元素方法(三)
- php 正则匹配静态资源,Struts2 配置静态资源文件不经过Strut处理(正则匹配)
- windows 安装 zabbix agent 客户端
- Vue 模块化开发(构建项目常用工具)
- 有人问李嘉诚的儿子李泽楷:“你父亲都教了你哪些成功赚钱的秘诀?”
- 用于 Windows8 的 Wijmo Charts 图表控件
- 给Metasploit安装无Lorcon2线支持模块
- mysql怎么设主键和外键_在MySQL中如何设置主键和外键
- 数据库系统概论-关系数据库
- 开发一个类似于 xxx 的应用有多难?
- NW集成打包 自定义图标及注意事项
- 父级fixed_相对于父元素的fixed定位的实现
- 瑞萨e2studio(5)----使用UART串口烧写程序到瑞萨芯片
热门文章
- 奖学金pascal程序
- 数码管时钟程序C语言00到99,[单片机]ACT89C51数码管时钟程序
- oracle 11g r2配置文件,Oracle 11g R2 常用配置与日志的文件位置
- 20211108 det(AB)=det(A)det(B)
- HDU1166 敌兵布阵 [线段树模板]
- .NET轻量级ORM框架Dapper入门精通
- hystrix源码小贴士之Yammer Publisher
- Jquery对象和dom对象获取html的方法
- hdu_Anniversary party_(树形DP入门题)
- linux的管道 |和grep命令以及一些其他命令(diff,echo,cat,date,time,wc,which,whereis,gzip,zcat,unzip,sort)...