gpt4 book ai didi

linux - 无法在QT中打开sqlite3数据库

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:14 25 4
gpt4 key购买 nike

我正处于 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;
}

这工作得很好。但如果我尝试用实际的 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 数据库文件,它工作完美。任何指导表示赞赏...谢谢。

编辑:

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

最佳答案

创建了一个全新的数据库,并且它有效!!!

不清楚为什么它之前不起作用......我绝对需要学习更多。

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

关于linux - 无法在QT中打开sqlite3数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7807430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com