1、环境配置
libmysql.dll 文件下载
链接:https://pan.baidu.com/s/1szphp3OoTIGmYja9tz1KJg
提取码:h1j6
将libmysql.dll库放到你的qt安装目录下的mingw53_32\bin目录中
我的qt安装在D盘
D:\qt\5.9\mingw53_32\bin

项目文件种添加
QT += sql

2、连接数据库
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
// 查看数据库驱动名字
qDebug()<<QSqlDatabase::drivers();
// 加载驱动mysql数据库驱动
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// 连接数据库
db.setHostName("192.168.139.129");
db.setUserName("root");
db.setPassword("Root_123root");
db.setDatabaseName("qt_mysql");
// 上面几步类似于登录数据库需要的信息
// mysql -h192.168.139.129 -uroot -pRoot_123root qt_mysql
if(!db.open())
{
qDebug()<<"connect database failed";
return -1;
}
qDebug()<<"connect database ok";
// 移动结果集指针到开始处
// query.seek(-1);
// 关闭数据库
db.close();
3、select查询
连接数据库成功之后
// 执行select查询
// 第一种方法
QSqlQuery query;
query.exec("select* from stu");
// 第二种方法
query.prepare("select* from stu");
query.exec();
// 查询字段总数
QSqlRecord rec = query.record();
qDebug()<<"字段数:"<<rec.count();
qDebug()<<"总记录数:"<<query.size();
// 获取每一条记录
while(query.next())
{
// 通过字段名
// qDebug()<<query.value("id").toInt()<<" "<<query.value("name").toString();
// 通过下标,从0开始
qDebug()<<query.value(0).toInt()<<" "<<query.value(1).toString();
}
4、update、insert、delete
连接成功之后
// 执行插入insert into
// 第一种
query.exec("insert into stu values(11,'添加')");
// 第二种 使用占位符 ?
query.prepare("insert into stu values(?,?)");
query.bindValue(0,12);
query.bindValue(1,"新添加");
query.exec();
// 执行update 操作
query.exec("update stu set name='update' where id =12");
// 执行delete操作
query.exec("delete from stu where id=12");
5、事务操作
数据库连接成功之后操作
// 事务处理
// 开启一个事务
query.exec("start tranaction");
// 设置事务为手动提交(默认是自动提交)
query.exec("set autocommit=0");
query.exec("insert into stu values(111,'jy')");
// 执行回滚
// query.exec("rollback");
// 提交
query.exec("commit");
6、整体代码
#include <QCoreApplication>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 查看数据库驱动名字
qDebug()<<QSqlDatabase::drivers();
// 加载驱动mysql数据库驱动
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// 连接数据库
db.setHostName("192.168.139.129");
db.setUserName("root");
db.setPassword("Root_123root");
db.setDatabaseName("qt_mysql"); // 数据库,如果时OracleSID
// 上面几步类似于登录数据库需要的信息
// mysql -h192.168.139.129 -uroot -pRoot_123root qt_mysql
if(!db.open())
{
qDebug()<<"connect database failed";
return -1;
}
qDebug()<<"connect database ok";
// 执行select查询
// 第一种方法
QSqlQuery query;
// query.exec("select* from stu");
// 第二种方法
query.prepare("select* from stu");
query.exec();
// 查询字段总数
QSqlRecord rec = query.record();
qDebug()<<"字段数:"<<rec.count();
qDebug()<<"总记录数:"<<query.size();
// 获取每一条记录
while(query.next())
{
// 通过字段名
// qDebug()<<query.value("id").toInt()<<" "<<query.value("name").toString();
// 通过下标,从0开始
qDebug()<<query.value(0).toInt()<<" "<<query.value(1).toString();
}
// 执行插入insert into
// 第一种
// query.exec("insert into stu values(11,'添加')");
// 第二种 使用占位符 ?
// query.prepare("insert into stu values(?,?)");
// query.bindValue(0,12);
// query.bindValue(1,"新添加");
// query.exec();
// 执行update 操作
// query.exec("update stu set name='update' where id =12");
// 执行delete操作
query.exec("delete from stu where id=12");
// 事务处理
// 开启一个事务
query.exec("start tranaction");
// 设置事务为手动提交(默认是自动提交)
query.exec("set autocommit=0");
query.exec("insert into stu values(111,'jy')");
// 执行回滚
// query.exec("rollback");
// 提交
query.exec("commit");
// 移动结果集指针到开始处
// query.seek(-1);
// 关闭数据库
db.close();
return a.exec();
}
版权声明:本文为weixin_45715405原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。