无法在QT中打开sqlite3数据库

时间:2011-10-18 12:47:31

标签: linux qt sqlite

我处于sqlite和QT的开始阶段。 QtSDK IDE下有各种sqlite数据库示例。这是其中一个例子的摘录:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
    QMessageBox::critical(0, qApp->tr("Cannot open database"),
        qApp->tr("Unable to establish a database connection.\n"
                 "This example needs SQLite support. Please read "
                 "the Qt SQL driver documentation for information how "
                 "to build it.\n\n"
                 "Click Cancel to exit."), QMessageBox::Cancel);
    return false;
}

这很好用。但如果我尝试将“:memory:”替换为实际的sqlite3数据库文件,......

void MainWindow::on_pushButton_5_clicked()
{
    QSqlQuery query;
    accounts_db = new QSqlDatabase();
    *accounts_db = QSqlDatabase::addDatabase("QSQLITE"); perror("");
accounts_db->setDatabaseName("/home/aditya/test.db.sqlite");
QSqlError *a = new QSqlError();
*a = accounts_db->lastError();
perror(a->text().toLatin1());
if (!accounts_db->open()) {
    perror("database open error :");
    QMessageBox::critical(0,qApp->tr("db.open\n"),a->text(),QMessageBox::Cancel);
    goto end;   // quit if not successful
}
if ( !accounts_db->isOpen() ) {
    perror("database is not open");
}
query.exec("select accno,branchcode,fname,lname,curbalance,accdate from accounts");
while(query.next()) {
    QString str = query.value(0).toString();
    std::cerr << qPrintable(str) << std::endl;
}
end:
;
}

......然后我没那么幸运。不确定lastError()究竟是如何工作的,但无论如何都试过了。我收到这些错误......

No such file or directory
: Invalid argument
QSqlQuery::exec: database not open

我已尝试在不同论坛上建议的相关文件和文件夹上更改权限,但没有结果。请注意,我正在研究Ubuntu Linux(如果这很重要),我还使用sqlite3命令行程序测试了这个test.db数据库文件,该程序完美无瑕。 任何指导都表示赞赏...谢谢。

编辑:

非常抱歉,我完全忘了解释错误是什么......:|

1 个答案:

答案 0 :(得分:0)

创建了一个全新的数据库,它可以运行!!!

不清楚为什么它之前没有工作......我肯定需要学习更多。

无论如何,非常感谢ppl :)。