Qt操作Mysql数据库

文章目录

  • 1、环境配置
  • 2、连接数据库
  • 3、select查询
  • 4、update、insert、delete
  • 5、事务操作
  • 6、整体代码

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操作Mysql数据库_第1张图片
项目文件种添加

QT += sql

Qt操作Mysql数据库_第2张图片

2、连接数据库

#include 
#include 
#include 
#include 
#include 

 // 查看数据库驱动名字
  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()<
    // 通过下标,从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 

#include 
#include 
#include 
#include 
#include 


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()<
        // 通过下标,从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();
}

你可能感兴趣的:(数据库,qt,mysql,开发语言)