QT连接MYSQL数据库的详细步骤


Posted in MySQL onJuly 07, 2021

 第一步要加入对应的数据库模块(sql)在工程文件(.pro)介绍几个类(也是对应的头文件)

  •  QSqlError提供SQL数据库错误信息的类
  •   QSqlQuery提供了执行和操作SQL语句的方法     
  • QSqlQueryDatabase 处理到数据库的连接  

 1.数据库的连接

//添加mysql数据库 
        QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL"); 
        //连接数据库
        db.setHostName("127.0.0.1");//数据库服务器IP
        db.setUserName("root");  //数据库用户名
        db.setPassword("root");//数据库用户名密码
        db.setDatabaseName("sys"); //数据库名
        if(db.open()==false)
        {
            QMessageBox::information(this,"数据库打开失败",db.lastError().text());
            return;
        }

  如果失败可能是QT连接mysql数据库要一个库(自己下载  libmysql.dll)把库文件放在QT的安装目录D:\Qt\5.9\mingw53_32\bin(根据自己的目录) 我的QT版本是5.9。数据库是否打开用户是否错误是否有这个数据库。

2.创建表

QSqlQuery q;
q.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;");

3.给表插入数据

方法1(单行插入)

q.exec("insert into student(id, name, age,score) values(1, '张三', 24,80);");

方法2 (多行插入)又分为 odbc 风格 与 oracle风格

   1. odbc 风格

q.prepare("insert into student(name, age,score) values(?, ?, ?)");  //?是占位符
   QVariantList name;
   name<<"素数"<<"等待"<<"安安";
   QVariantList age;
   age<<-2<<12<<14;
   QVariantList score;
   score<<0<<89<<90;
   //给字段绑定相应的值 按顺序绑定
   q.addBindValue(name);
   q.addBindValue(age);
   q.addBindValue(score);
   //执行预处理命令
   q.execBatch();

  要加#include<QVariantList>头文件 字段要按顺序绑定

    2.orace风格d

//占位符 :+自定义名字
  q.prepare("insert into student(name, age,score) values(:n, :a,:s)");
  QVariantList name;
  name<<"夸克"<<"红米"<<"鸿蒙";
  QVariantList age;
  age<<5<<10<<3;
  QVariantList score;
  score<<77<<89<<99;
  //给字段绑定 顺序任意因为根据:+自定义名字
  q.bindValue(":n",name);
  q.bindValue(":s",score);
  q.bindValue(":a",age);
  //执行预处理命令
  q.execBatch();

 根据占位符区别所以字段顺序可以任意

3.更新表

QSqlQuery q;
        q.exec("update student set score=76 where name='李四'");

 4.删除表

QSqlQuery q;
        q.exec("delete from student  where name='张三'");

5.遍历表

QSqlQuery q;
    q.exec("select *from student");
    while(q.next())   //遍历完为false
    {
        //以下标
        //qDebug()<<q.value(0).toInt()<<q.value(1).toString()<<q.value(2).toInt() 
        <<q.value(3).toInt();
        //以字段
        qDebug()<<q.value("id").toInt()<<q.value("name").toString()<<q.value("age").toInt() 
        <<q.value("score").toInt();
    }

到此这篇关于QT连接MYSQL数据库的文章就介绍到这了,更多相关QT连接MYSQL数据库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL注入基础练习
May 30 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
MySQL分库分表详情
Sep 25 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
MySql数据库 查询时间序列间隔
May 11 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
MySQL池化框架学习接池自定义
Jul 23 MySQL
mysql备份策略的实现(全量备份+增量备份)
mysql定时自动备份数据库的方法步骤
通过shell脚本对mysql的增删改查及my.cnf的配置
Jul 07 #MySQL
MySQL一些常用高级SQL语句
MySQL系列之十四 MySQL的高可用实现
MySQL系列之十二 备份与恢复
Jul 02 #MySQL
MySQL系列之十一 日志记录
Jul 02 #MySQL
You might like
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
浅谈js闭包理解
2019/04/01 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
Python备份Mysql脚本
2008/08/11 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python实现连连看游戏
2020/02/14 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
高校教师岗位职责
2014/03/18 职场文书
演讲比赛策划方案
2014/06/11 职场文书
学校欢迎标语
2014/06/18 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
解决vue中provide inject的响应式监听
2022/04/19 Vue.js