问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Qt C++中对多个SQLite数据库的操作详解

创作时间:
作者:
@小白创作中心

Qt C++中对多个SQLite数据库的操作详解

引用
CSDN
1.
https://blog.csdn.net/weixin_39926429/article/details/137952448

本文将介绍如何在Qt C++中操作多个SQLite数据库。通过使用QSqlQuery(const QSqlDatabase &db)构造函数,可以轻松实现对不同数据库的独立操作。

基本思路

在处理多个数据库时,你可能会疑惑查询语句如何区分不同的数据库。Qt提供了一个解决方案:通过QSqlQuery(const QSqlDatabase &db)构造函数,可以明确指定查询操作所针对的数据库。

代码示例

以下是一个具体的代码示例,展示了如何连接和操作两个不同的SQLite数据库:

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlDriver>
#include <QElapsedTimer>

static void func3()
{
    // 创建并配置第一个数据库连接
    QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "connection1");
    db1.setDatabaseName("d:/test1.db");
    QSqlQuery query1(db1); // 定义查询对象1(关联数据库1)

    // 创建并配置第二个数据库连接
    QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "connection2");
    db2.setDatabaseName("d:/test2.db");
    QSqlQuery query2(db2); // 定义查询对象2(关联数据库2)

    // 操作第一个数据库
    if (db1.open()) {
        query1.exec("create table student(id int primary key, name varchar(20))");
        query1.exec("insert into student values(0, 'Jack_Ma')");
        db1.close();
    } else {
        qDebug() << "没打开db1";
    }

    // 操作第二个数据库
    if (db2.open()) {
        query2.exec("create table student(id int primary key, name varchar(20))");
        query2.exec("insert into student values(0, 'HuaTeng_Ma')");
        db2.close();
    } else {
        qDebug() << "没打开db2";
    }
}

int main(int argc, char* argv[])
{
    QCoreApplication a(argc, argv);
    QElapsedTimer t;
    t.start();
    func3();
    qDebug() << t.elapsed() << "ms";
    return a.exec();
}

运行效果

运行上述代码后,可以看到两个数据库的操作不会相互影响。以下是运行效果的截图:

注意事项

在使用Qt进行数据库操作时,别忘了在.pro文件中添加QT += sql,以确保包含必要的库。

这个示例在Qt 6.2.4版本下使用MSVC2019编译器进行了测试,确保了代码的正确性和兼容性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号