我处于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数据库文件,该程序完美无瑕。 任何指导都表示赞赏...谢谢。
编辑:
非常抱歉,我完全忘了解释错误是什么......:|
答案 0 :(得分:0)
创建了一个全新的数据库,它可以运行!!!
不清楚为什么它之前没有工作......我肯定需要学习更多。
无论如何,非常感谢ppl :)。