Qt连接数据库

本文介绍了如何在Qt中编译MySQL驱动,然后使用QSqlDatabase和QSqlQuery进行数据库的连接、查询、增删改操作。通过设置数据库的主机名、用户名、密码、数据库名和端口实现连接,并展示了在连接成功后如何执行SQL语句进行数据操作。
摘要由CSDN通过智能技术生成

以Mysql为例

  • 准备

    • Qt官方并没有为我们提供可用的mysql,只提供了源代码(不能直接使用),需要我们基于这些源码自行编译得到对应的动态库(静态库)之后,才能被程序加载从而连接上相应的数据库。
    • 具体操作参考Qt如何编译数据库驱动–爱编程的大丙
  • 连接数据库

//1.包含头文件
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlDatabase>
#include<QSqlQuery>
#include <QSqlError>
#include <QDebug>

//2.确定所用数据库的驱动
QStringList list=QSqlDatabase::drivers();
qDebug()<<list;

//3.创建数据库实例
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL")//只能通过该静态方法创建,构造方法不行

//4.设置数据库属性
//1.设置要连接的主机名(本地的话就是localhost(127.0.0.1)),远程填远程服务器ip地址
db.setHostName("localhost");
//2.设置要连接的用户名
db.setUserName("你的用户名");
//3.设置要连接数据库名
db.setDatabaseName("你的数据库名");
//4.设置数据库名对应的密码
db.setPassword("你的数据库密码");
//5.设置端口号(mysql默认为3306)
db.setPort(3306);

//5.连接
//使用open()函数来连接 成功-true 失败-false
if(!db.open())
{
	//使用lasterror获取数据库操作最后一次错误操作信息--使用QSqlError的text()函数将其转换为qstring
	qDebug()<<"失败原因: "<<db.lastError().text();
}
else
{
	qDebug()<<"连接成功!";
}
  • 操作数据库
    • 通过QSqlQuery类进行查询对数据库进行增删改查
//使用QSqlQuery来操作数据库(增删查改)
 QSqlQuery query(db);
#if 0
    //查
    QString sql="select * from empp";
    //通过该方法来执行sql语句
    query.exec(sql);//如果不在构造函数里指定sql就必须在exec里指定sql语句
    //执行成功就会在query里得到一个结果集通过循环来访问它
    while(query.next())//next():得到结果集中的一条结果(也就是数据库的每一行),如果遍历完返回false
    {
        //去除每条记录的字段值(从0开始,0代表id 1代表年龄 2代表姓名)
        qDebug()<<query.value(0).toInt()<<query.value(1).toInt() //value返回的是全能类型(Qvariant)需要转换为字段的真实类型
               <<query.value(2).toString()<<endl;
    }
#endif

#if 0
    //增(insert插入数据时字符串和日期数据类型需要用''包围,其他类型不需要)
    int id=7;
    int age=22;
    QString name("李白");
    QString sql = QString("insert into empp(id,age,name) values(%1,%2,'%3')").arg(id).arg(age).arg(name);//这里%1就是id,%2就是age...
    query.exec(sql);

#endif

#if 0
    //改--修改id为5的数据(李新)
    int id=5;
    int newId=7;
    int newAge=22;
    QString newName("李白");
    QString sql = QString("update empp set id=%1,age=%2,name='%3' where id=%4").arg(newId).arg(newAge).arg(newName).arg(id);
    query.exec(sql);

#endif

#if 1
    //删--删除id为8的数据
    int id=8;
    QString sql = QString("delete from empp where id = %1").arg(id);
    query.exec(sql);

#endif

//断开数据库连接
db.close();
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值