QT-数据库操作(以MYSQL为例)

一、加载sql驱动

修改项目文件pro,添加

QT += sql

包含头文件

#include 
加载数据库驱动

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
设置账号密码

    db.setHostName("localhost");
    db.setDatabaseName("hibernate");
    db.setUserName("root");
    db.setPassword("");
    if(!db.open()){
        qDebug() << "数据库操作失败";return;
    }

二、查询语言

执行查询语句

    QSqlQuery query;
    bool success = query.exec("select * from user");
    if(!success){
        qDebug() << "查询user失败";return;
    }

获取表的数据结构信息,即字段名相关信息

    QSqlRecord rec = query.record();
    qDebug() << "user表的字段总数为:" << rec.count();

QT-数据库操作(以MYSQL为例)_第1张图片

获取查询结果集

    // 将查询的结果集指针调整到最开始
    query.seek(-1);
    while(query.next()){
        qDebug() << query.value(0) << query.value(1) << query.value(2);
    }

QT-数据库操作(以MYSQL为例)_第2张图片


三、插入数据库

    // 插入数据user
    query.prepare("insert into user values(?,?,?)");
    query.bindValue(1,"kanrong");
    query.bindValue(2,12);
    success = query.exec();
    if(!success){
        QSqlError lastError = query.lastError();
        qDebug() << "插入失败:" << lastError.driverText() << lastError.databaseText();return;
    }


四、更新数据库

操作和插入一样

五、删除

直接使用query.exec(sql)即可。

六、新建表

    QSqlQuery query;
    bool success = false;
    success= query.exec("create table if not exists user \
               (id integer primary key autoincrement not null,\
                username varchar,\
                age int)");
    if(!success){
        qDebug() << "新建表user失败";
        QSqlError lastError = query.lastError();
        qDebug() << "插入失败:" << lastError.driverText() << lastError.databaseText();
        return;
    }





















你可能感兴趣的:(QT)