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 07 MySQL
MySQL如何构建数据表索引
May 13 MySQL
IDEA 链接Mysql数据库并执行查询操作的完整代码
May 20 MySQL
MySQL去除重叠时间求时间差和的实现
Aug 23 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
MySQL笔记 —SQL运算符
Jan 18 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL如何使备份得数据保持一致
May 02 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 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
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
Python字典简介以及用法详解
2016/11/15 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
庆元旦文艺演出主持词
2014/03/27 职场文书
太行山上观后感
2015/06/05 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery