【问题标题】:Qt: DB connection won't openQt:数据库连接不会打开
【发布时间】:2016-10-06 07:05:14
【问题描述】:

我正在尝试从我的 Firefox cookie-db 中获取一个 cookie。但是,由于某种原因,数据库不会打开。

QString tgc;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:\Users\myaccount\AppData\Roaming\Mozilla\Firefox\Profiles\234f25fs.default\cookies.sqlite");
bool ok = db.open();
if (!ok)
{
    // qDebug() << "Error: connection with database fail";
}
else
{
    QSqlQuery query("SELECT value WHERE name='TGC' FROM moz_cookies");
    if (query.next())
    {
        tgc = query.value(0).toString();
    }
}
db.close();
return tgc;

但是,db.open() 返回 false。可能的原因是什么?

【问题讨论】:

  • 使用正斜杠 / 而不是反斜杠或转义你的反斜杠

标签: c++ sql qt sqlite


【解决方案1】:

在 C 和 C++ 中,\ 字符默认用作转义字符,它们用于表示一些特殊字符(如 '\n' 表示换行符)。当您打算在字符串文字中实际使用它们时,您需要对它们进行转义。

所以,您的setDatabaseName 调用应该如下所示:

db.setDatabaseName("C:\\Users\\myaccount\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\234f25fs.default\\cookies.sqlite");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2012-04-26
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    相关资源
    最近更新 更多