Я очень новичок в СУБД QT и SQLite. Я пытаюсь открыть существующую базу данных, созданную с помощью программы командной строки sqlite3 под Ubuntu Linux. К той же базе данных я пытаюсь получить доступ из QT, используя следующий код:
void MainWindow::func()
{
QSqlQuery query;
accounts_db = new QSqlDatabase();
*accounts_db = QSqlDatabase::addDatabase("QSQLITE");
perror("? ");
accounts_db->setDatabaseName("/home/user/xyz.db");
QSqlError *a = new QSqlError();
*a = accounts_db->lastError();
perror(a->text().toLatin1());
if (!accounts_db->open()) {
perror("database open error :");
}
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:
;
}
Это не удается со следующими ошибками...
No such file or directory
: Invalid argument
QSqlQuery::exec: database not open
Обратите внимание, что я получаю «Нет такого файла или каталога» после adddatabase(), понятия не имею, о каком файле идет речь. Также обратите внимание, что isOpen() и open() возвращают "true" (???). Ошибка «база данных не открыта» возникает из-за вызова db.exec() (... я полагаю...).
Отчаянно нуждается в руководстве...