2011-10-18 65 views
0

我處於sqlite以及QT的開始階段。 QtSDK IDE下有很多用於sqlite數據庫的例子。這是一個例子摘錄:無法在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; 
} 

這工作得很好。但如果我試圖取代「:記憶:」與實際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 

我已經嘗試更改有關的文件和文件夾的權限,不同的論壇上建議,但沒有結果。請注意,我正在使用Ubuntu Linux(如果有問題),我還使用sqlite3命令行程序測試了這個test.db數據庫文件,該文件完美無瑕。 任何指導表示讚賞...謝謝。

編輯:

非常抱歉,我完全忘了解釋錯誤是什麼...:|

+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 :)。