Я нахожусь в начальной фазе как 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
Я пытался изменить разрешения n'all для соответствующих файлов и папок, как это предлагалось на разных форумах, но безрезультатно.Просто обратите внимание, я работаю над Ubuntu Linux (... если это имеет значение), я также протестировал этот файл базы данных test.db с помощью программы командной строки sqlite3, которая работает безупречно.Любое руководство приветствуется ... спасибо.
РЕДАКТИРОВАТЬ:
Очень жаль, что я полностью забыл объяснить, в чем ошибка ...: |