2012-03-26 16 views
0
bool MainWindow::initDb() { 
    db = QSqlDatabase::addDatabase("QSQLITE"); // defined on class header as QSqldatabase db 
    db.setDatabaseName("data.db"); 
    if (!db.open()) { 
     QMessageBox::critical(this, 
           tr("Error"), 
           tr("Could not save data. Database problem.")); 
     return false; 
    } 
    query.prepare("create table if not exists snippet (id int primary key, title varchar(255) not null, tags varchar(255), snippet text)"); 
    if (!query.exec()) { // error 
     QMessageBox::critical(this, 
           tr("Database error"), 
           tr("Could not setup database")); 
     qDebug() << "Database error : " << query.lastError(); 
     return false; 
    } 
    query.clear(); 
    return true; 
} 

データベースが表示されますデータベースエラーメッセージボックスと以下がコンソールに表示されます。Qtクエリ実行エラー

Database error : QSqlError(-1, "Driver not loaded", "Driver not loaded") 
+0

このプラットフォームはどのプラットフォームですか? sqliteとsqlite qtプラグインがインストールされていますか? –

+0

Linux ubuntu 11.10、SQLIteがインストールされています。クエリをローカルオブジェクトとして使用してもうまく動作します。ちょうど**クエリ**がクラスプロパティに問題が発生したとき。 – Dewsworld

+1

クラスメンバの場合は、デフォルトのコンストラクタが使用されます。http://qt-project.org/doc/qt-4.8/qsqlquery.html#QSqlQuery-2適切なデータベースを渡すことをインスタンス化してみてください。 –

答えて

1

私は部分的な解決策を得ました。 クエリーをローカルオブジェクトとしてdbに渡して、その問題を解決します。 Like

QSqlQuery query(db);