2012-05-11 50 views
2

當我嘗試使用exe連接到同一個文件夾中的數據庫文件時發生了一些奇怪的事情。不顯示錯誤消息,數據庫中的數據未加載。QSqlDatabase和連接到.sqlite文件

sdb = QSqlDatabase::addDatabase("QSQLITE"); 
sdb.setDatabaseName("lang.sqlite"); 

if (!sdb.open()) 
{ 
    qDebug() << sdb.lastError().text(); 

    QMessageBox msgBox; 
    msgBox.setIcon(QMessageBox::Critical); 
    msgBox.setText(sdb.lastError().text()); 
    msgBox.setStandardButtons(QMessageBox::Ok); 
    msgBox.exec(); 
} 

但是,如果我將數據庫移動到另一個文件夾 - 一切工作正常。

sdb = QSqlDatabase::addDatabase("QSQLITE"); 
sdb.setDatabaseName("db\\lang.sqlite"); 

if (!sdb.open()) 
{ 
    qDebug() << sdb.lastError().text(); 

    QMessageBox msgBox; 
    msgBox.setIcon(QMessageBox::Critical); 
    msgBox.setText(sdb.lastError().text()); 
    msgBox.setStandardButtons(QMessageBox::Ok); 
    msgBox.exec(); 
} 

任何想法?

回答

2

試試這個:

sdb.setDatabaseName(qApp->applicationDirPath() 
        + QDir::separator() 
        + "lang.sqlite");