QT开发中文网

qt c++ QSqlite怎么获取之前创建的连接

在Qt中,可以通过QSqlDatabase::database()方法来获取之前创建的数据库连接。该方法接受一个字符串参数,用于指定连接名称。如果找不到对应的连接,则返回无效的数据库对象。

以下是一个简单示例代码:

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 连接SQLite数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "myConnection");
    db.setDatabaseName(":memory:");  // 内存模式下创建一个临时数据库

    if (!db.open()) {
        qDebug() << "无法连接数据库";
        return 1;
    }

    QSqlQuery query(db);
    
    // 创建表格
    query.exec("CREATE TABLE person (id INT PRIMARY KEY, name VARCHAR(20), age INT)");

    // 插入数据
    query.prepare("INSERT INTO person VALUES (?, ?, ?)");
    query.addBindValue(1);
    query.addBindValue("Tom");
    query.addBindValue(20);
    
    if (!query.exec()) {
        qDebug() << "插入记录失败:" << query.lastError().text();
        return 1;
     }
     
     qDebug() << "插入记录成功!";

     // 关闭数据库连接
     db.close();

     // 再次打开之前创建的连接并查询数据
     QSqlDatabase db2 = QSqlDatabase::database("myConnection");

     if (!db2.isValid()) {
         qDebug() << "找不到对应的连接";
         return 1;
     }

     if (!db2.open()) {
         qDebug() << "无法打开数据库连接";
         return 1;
     }

     QSqlQuery query2(db2);
     
     if (query2.exec("SELECT * FROM person")) {
         while (query2.next()) {
             int id = query2.value(0).toInt();
             QString name = query2.value(1).toString();
             int age = query2.value(2).toInt();

             qDebug() << "id:" << id << ", name:" << name << ", age:" << age;
         }
     } else {
         qDebug() << "查询数据失败:" << query.lastError().text();
         return 1;
     }

     return a.exec();
}

在上面的代码中,我们通过addDatabase()方法创建了一个名为“myConnection”的Sqlite数据库连接,并执行了一些SQL语句来创建表格和插入记录。

然后,我们关闭了该连接。再次打开该连接时,可以通过database()方法来获取之前创建的连接对象,并指定相应的名称。如果找不到对应的连接,则返回无效的数据库对象。

最后,我们查询之前插入的数据并输出结果。

注意:这里需要根据实际情况修改数据库文件名和连接名称。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1805

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?