知识点

  • 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(增加、删除、遍历)相关推荐

  1. Qt学习之Qt基础入门(下)

    1. 前言 前两篇博客简单的阐述了一下Qt的入门用法,这篇博客继续跟着视频学习. Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) ...

  2. Qt学习之Qt基础入门(中)

    1. 前言 上一篇博客,总结了Qt的一些基础用法,这篇博客继续跟视频学习Qt的常用方法 Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门( ...

  3. C#学习笔记----C#连接MySQL数据库

    C#学习笔记----C#连接MySQL数据库 using System.Linq; using System.Text; using System.Data;// 引用表的命名空间 using Sys ...

  4. linux qt 添加动态链接库_Qt 连接MySql数据库

    Qt默认是不含Mysql驱动的,所以我们需要手工编译Mysql动态链接库,以Win平台举例. 前期准备 下载mysql 数据库 qt5.13.1使用的是mysql-5.7.25,其他版本没有测试 下载 ...

  5. 嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板

    想要把qt工程放到开发板上运行,就需要用到交叉编译.由于qt是跨平台的,所以只需要换个编译器编译一下就可以. 以qt学习–计时器的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时 ...

  6. java编程连接mysql_Java编程学习之JDBC连接MySQL

    JDBC连接MySQL 一.对JDBC连接数据库的步骤 1.加载数据库驱动 //加载驱动 Class.forName(driverClass) ---------------------------- ...

  7. 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. ...

  8. Qt 学习(三) —— Qt 模块

    1. Qt 模块简介 Qt由许多模块组成,分别支持不同领域的功能,主要分为 Essentials 和 Add-On. Qt Essential 是基本模块,它们可以在所有受支持的开发平台和经过测试的目 ...

  9. QT通过ODBC远程连接MySQL数据库

    第一步用:SQLyogC测试看看是否能连接上,如果都不能连接上谈何qt远程. 第二步:骤下载并安装mysqlODBCQ驱动 ,安装过程一直点击下一步骤就可以了https://pan.baidu.com ...

最新文章

  1. lighttpd 负载均衡-反向代理+cache浅谈
  2. iOS根据Debug和Release状态的变化来屏蔽日志输出
  3. center6linux ip设置,centos6固定ip地址
  4. 浅析网站SEO优化中导航优化的四大技巧!
  5. python with open as yaml_python怎么解析yaml文件?
  6. goroutine 那些事
  7. Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)
  8. 31.水平居中总结-不定宽块状元素方法(三)
  9. php 正则匹配静态资源,Struts2 配置静态资源文件不经过Strut处理(正则匹配)
  10. windows 安装 zabbix agent 客户端
  11. Vue 模块化开发(构建项目常用工具)
  12. 有人问李嘉诚的儿子李泽楷:“你父亲都教了你哪些成功赚钱的秘诀?”
  13. 用于 Windows8 的 Wijmo Charts 图表控件
  14. 给Metasploit安装无Lorcon2线支持模块
  15. mysql怎么设主键和外键_在MySQL中如何设置主键和外键
  16. 数据库系统概论-关系数据库
  17. 开发一个类似于 xxx 的应用有多难?
  18. NW集成打包 自定义图标及注意事项
  19. 父级fixed_相对于父元素的fixed定位的实现
  20. 瑞萨e2studio(5)----使用UART串口烧写程序到瑞萨芯片

热门文章

  1. 奖学金pascal程序
  2. 数码管时钟程序C语言00到99,[单片机]ACT89C51数码管时钟程序
  3. oracle 11g r2配置文件,Oracle 11g R2 常用配置与日志的文件位置
  4. 20211108 det(AB)=det(A)det(B)
  5. HDU1166 敌兵布阵 [线段树模板]
  6. .NET轻量级ORM框架Dapper入门精通
  7. hystrix源码小贴士之Yammer Publisher
  8. Jquery对象和dom对象获取html的方法
  9. hdu_Anniversary party_(树形DP入门题)
  10. linux的管道 |和grep命令以及一些其他命令(diff,echo,cat,date,time,wc,which,whereis,gzip,zcat,unzip,sort)...