невозможно открыть базу данных sqlite3 в QT - PullRequest
0 голосов
/ 18 октября 2011

Я нахожусь в начальной фазе как 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, которая работает безупречно.Любое руководство приветствуется ... спасибо.

РЕДАКТИРОВАТЬ:

Очень жаль, что я полностью забыл объяснить, в чем ошибка ...: |

1 Ответ

0 голосов
/ 20 октября 2011

Создана новая база данных, и она работает !!!

Непонятно, почему раньше это не работало ... Мне определенно нужно больше учиться.

Во всяком случае, большое спасибо, чел. :).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...