• 售前

  • 售后

热门帖子
入门百科

QT毗连MYSQL数据库的详细步调

[复制链接]
刘冠华 显示全部楼层 发表于 2021-8-14 15:05:29 |阅读模式 打印 上一主题 下一主题
第一步要参加对应的数据库模块(sql)在工程文件(.pro)先容几个类(也是对应的头文件)
       
  • QSqlError提供SQL数据库错误信息的类   
  •   QSqlQuery提供了执行和利用SQL语句的方法         
  • QSqlQueryDatabase 处理处罚到数据库的毗连  
1.数据库的毗连
  1. //添加mysql数据库
  2.         QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
  3.         //连接数据库
  4.         db.setHostName("127.0.0.1");//数据库服务器IP
  5.         db.setUserName("root");  //数据库用户名
  6.         db.setPassword("root");//数据库用户名密码
  7.         db.setDatabaseName("sys"); //数据库名
  8.         if(db.open()==false)
  9.         {
  10.             QMessageBox::information(this,"数据库打开失败",db.lastError().text());
  11.             return;
  12.         }
复制代码
如果失败可能是QT毗连mysql数据库要一个库(本身下载  libmysql.dll)把库文件放在QT的安装目次D:\Qt\5.9\mingw53_32\bin(根据本身的目次) 我的QT版本是5.9。数据库是否打开用户是否错误是否有这个数据库。
2.创建表
  1. QSqlQuery q;
  2. q.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;");
复制代码
3.给表插入数据

方法1(单行插入)
  1. q.exec("insert into student(id, name, age,score) values(1, '张三', 24,80);");
复制代码
方法2 (多行插入)又分为 odbc 风格 与 oracle风格
   1. odbc 风格
  1. q.prepare("insert into student(name, age,score) values(?, ?, ?)");  //?是占位符
  2.    QVariantList name;
  3.    name<<"素数"<<"等待"<<"安安";
  4.    QVariantList age;
  5.    age<<-2<<12<<14;
  6.    QVariantList score;
  7.    score<<0<<89<<90;
  8.    //给字段绑定相应的值 按顺序绑定
  9.    q.addBindValue(name);
  10.    q.addBindValue(age);
  11.    q.addBindValue(score);
  12.    //执行预处理命令
  13.    q.execBatch();
复制代码
要加#include<QVariantList>头文件 字段要按次序绑定
    2.orace风格d
  1. //占位符 :+自定义名字
  2.   q.prepare("insert into student(name, age,score) values(:n, :a,:s)");
  3.   QVariantList name;
  4.   name<<"夸克"<<"红米"<<"鸿蒙";
  5.   QVariantList age;
  6.   age<<5<<10<<3;
  7.   QVariantList score;
  8.   score<<77<<89<<99;
  9.   //给字段绑定 顺序任意因为根据:+自定义名字
  10.   q.bindValue(":n",name);
  11.   q.bindValue(":s",score);
  12.   q.bindValue(":a",age);
  13.   //执行预处理命令
  14.   q.execBatch();
复制代码
根据占位符区别所以字段次序可以恣意
3.更新表
  1. QSqlQuery q;
  2.         q.exec("update student set score=76 where name='李四'");
复制代码
4.删除表
  1. QSqlQuery q;
  2.         q.exec("delete from student  where name='张三'");
复制代码
5.遍历表
  1. QSqlQuery q;
  2.     q.exec("select *from student");
  3.     while(q.next())   //遍历完为false
  4.     {
  5.         //以下标
  6.         //qDebug()<<q.value(0).toInt()<<q.value(1).toString()<<q.value(2).toInt()
  7.         <<q.value(3).toInt();
  8.         //以字段
  9.         qDebug()<<q.value("id").toInt()<<q.value("name").toString()<<q.value("age").toInt()
  10.         <<q.value("score").toInt();
  11.     }
复制代码
到此这篇关于QT毗连MYSQL数据库的文章就先容到这了,更多相干QT毗连MYSQL数据库内容请搜刮脚本之家从前的文章或继续欣赏下面的相干文章渴望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作