第一:我使用Qt v5.3.1
與MinGW 4.8.2
和Window 7 32bit
平臺。當連接到數據庫,我得到一個錯誤`司機不loaded`
當windows 7
運行我的申請,我發現它在連接到數據庫工作的罰款只有在安裝的Qt環境,也當Virtual PC
相同的應用程序移動到像windows xp
另一個平臺上,不幸的是,我發現數據庫的連接失敗並且出現錯誤消息driver not loaded
,但該應用程序工作正常,但未連接到數據庫。
我嘗試:
我用
QSqlDatabase::drivers()
檢查sqlite
支持系統 ,並且結果是,sqlite
數據庫 與許多其他類型的支持。我已經使用
isValid()
來檢查是否有一個有效的驅動程序,但 函數返回false
,這表明該數據庫類型是 不可用或無法加載。
以下是我使用的代碼:
database.h
class database
{
public:
static QSqlDatabase db;
static QString dbPath;
database();
static void connect();
static bool openConnection();
static void CloseConnection();
static void removeDB();
};
database.cpp
QSqlDatabase database::db = QSqlDatabase::addDatabase("QSQLITE");
QString database::dbPath = "";
database::database(){
}
void database::connect(){
database::dbPath = "database.db";
database::db.setDatabaseName(database::dbPath);
}
void database::CloseConnection(){
database::db.close();
}
void database::removeDB(){
database::db.removeDatabase(database::db.defaultConnection);
}
而且我已經如果數據庫文件存在或不檢查,而且我已經打開到數據庫的連接。
database::connect();
if(QFile::exists(database::dbPath)){
if(database::db.open()){
ui->label->setText(ui->label->text() + "Connected.");
QSqlQuery qry;
qry.prepare("SELECT * FROM users");
qry.exec();
while(qry.next()){
ui->listWidget->addItem(qry.value("username").toString());
ui->listWidget->item(ui->listWidget->count()-1)->setData(Qt::UserRole, qry.value("id").toString());
}
database::CloseConnection();
}else{
ui->label->setText(ui->label->text() + "Failed to connect to database");
}
}else{
ui->label->setText(ui->label->text() + "Database file does not found");
}
我不知道什麼是與數據庫的連接問題,一切正常,並沒有在我的應用程序沒有丟失文件和可執行文件旁邊的數據庫文件。
如何解決這個問題?
您絕對不會發布代碼來檢查錯誤或返回代碼。你不應該先這麼做嗎?事實上,你所有的函數都返回'void',所以我沒有看到你如何檢查錯誤條件。 – PaulMcKenzie 2014-08-30 00:23:05
數據庫文件的路徑應該是什麼? ('dbPath'不包含路徑。) – 2014-08-30 07:55:48
@PaulMcKenzie:謝謝,我已經更新了我的問題,澄清了這一點。 – 2014-08-30 08:26:57