ITPub博客

首页 > 数据库 > 数据库开发技术 > Qt操作Mysql数据库

Qt操作Mysql数据库

原创 数据库开发技术 作者:讳疾忌医-note 时间:2024-10-25 17:02:38 0 删除 编辑

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();
}


原文作者:讳疾忌医-note;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2024-08-12

  • 博文量
    126
  • 访问量
    73139