2012-05-11 25 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");