2011-10-18 20 views
0

私はsqliteとQTの両方の初期段階にあります。 QtSDK IDEには、sqliteデータベース用のさまざまな例があります。これは、例の1つからの抜粋です。QTでsqlite3データベースを開くことができません

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; 
} 

これはうまくいきます。 「:メモリを:」私は交換してみてください場合は

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: 
; 
} 

...、実際のsqlite3のデータベースファイルを使用して...その後、私はそれほど幸運ではないです。 lastError()がどのように動作するかはわかりませんが、とにかく試してみました。私は、私は別のフォーラムで提案されるように心配したファイルやフォルダにn'allパーミッションを変更しようとしたが、結果なしに...

No such file or directory 
: Invalid argument 
QSqlQuery::exec: database not open 

をこれらのエラーを取得しています。ちょっとメモしておきますが、Ubuntu Linuxで作業しています(もし問題があれば)、このtest.dbデータベースファイルをsqlite3コマンドラインプログラムでテストしました。これは完全に動作します。 ガイダンスは高く評価されています...ありがとうございます。

EDIT:

私は完全に誤りがあるかを説明するのを忘れていることを非常に残念...:|

+0

何が間違っているのかはわかりませんが、lastError関数を使用して解決することはできますか? (http://doc.qt.nokia.com/stable/qsqldatabase.html#lastError) – Michel

+0

私はそれを試しましたが、実際には何のエラーも出力できませんでした。とにかく、perrorは、 "No such file or directory"というデータベースファイルを表示します。私はまた、ここで提案されているように私のホームディレクトリにデータベースを置こうとしましたが(http://www.developer.nokia.com/Community/Wiki/CS001504_-_Creating_an_SQLite_database_in_Qt)、それも動作していないようです... – aditya

+0

私は持っているそれは "いいえ、そのようなファイルやディレクトリ"と言うときにどのファイルがそれについて話しているのか分かりません...誰ですか? – aditya

答えて

0

新しいデータベースが作成され、動作します。

なぜそれが以前にはうまくいかなかったのか明確ではありません...私は間違いなくもっと勉強する必要があります。

とにかく、ありがとうppl :)

関連する問題