问:数据库连接无法打开

时间:2016-10-06 07:05:15

标签: c++ sql qt sqlite

我正在尝试从我的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。可能的原因是什么?

1 个答案:

答案 0 :(得分:3)

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

因此,您的setDatabaseName电话应该是这样的:

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