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 相关文章推荐
如何用Navicat操作MySQL
May 12 MySQL
MySQL官方导出工具mysqlpump的使用
May 21 MySQL
MySql开发之自动同步表结构
May 28 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
mysql 索引合并的使用
Aug 30 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
Mysql InnoDB 的内存逻辑架构
May 06 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
MySql中的json_extract函数处理json字段详情
Jun 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 引用文件技巧
2010/03/02 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
接口可以包含哪些成员
2012/09/30 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
数控专业应届生求职信
2013/11/27 职场文书
导购员的岗位职责
2014/02/08 职场文书
高考备战决心书
2014/03/11 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS
python自动化测试之Selenium详解
2022/03/13 Python