2013-06-01 44 views
1

我在qt上工作,我的數據庫與qt正確連接,但突然出現以下問題,每當我調試時,,, ii變得無法獲取或添加數據/到數據庫,,,我不知道最新情況,但我是新來的QT。QSqlQuery :: exec:數據庫未打開

QSqlQuery :: EXEC:數據庫無法打開

可能有人幫助,請,,這是一個緊急情況下 這裏的代碼

db = QSqlDatabase::addDatabase("QODBC"); 
db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:/Users/user/Desktop/Final_Version/db.accdb"); 
db.close(); 
db.open(); 
QSqlQuery query; 
query.exec("Select ID from TestId"); 
while(query.next()) 
{ 
TestId = query.value(0).toInt(); 
} 
db.close(); 
//================================================================================== 

回答

1

您需要添加QSQL dll文件對微軟在您的sqldrivers文件夾中訪問驅動程序

檢查以下是否正在調試

  1. 檢查dll引用您的項目設置(在項目的.pro文件,你必須把QT + = SQL,如果你使用的是Visual Studio集成您在項目設置檢查基準形成屬性)
  2. 檢查你Qtdirectory的驅動程序文件夾和DLL的

如果你正在分發你的應用程序,你只需複製sql驅動文件夾與您的可執行文件以及所需的DLL。

編輯與數據庫連接綁定您的QSqlQuery對象

db = QSqlDatabase::addDatabase("QODBC"); 
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb};FIL={MSAccess};DBQ=C:/Users/user/Desktop/Final_Version/db.mdb"); 
database.open(); 
QSqlQuery query(db); 
query.exec("Select ID from TestId"); 
while(query.next()) 
{ 
TestId = query.value(0).toInt(); 
} 
db.close(); 

我認爲,一些這將幫助你... :)

+0

非常感謝你,我會盡力而爲,但請留在我身邊可能需要你......我昨天在等待答案 –

+0

你能告訴我你的意思嗎?「檢查你Qtdirectory的驅動程序文件夾和dll 「並且我如何在安裝路徑上檢查它 –

+0

將會有一個名爲」sqldrivers「的文件夾,其中包含一些用於數據庫連接的dll。嘗試找到它。例如:qsqlite4.dll,qsqlite4d.dll等。如果有丟失的DLL可能無法正常工作。 – imalvare

1
QSqlQuery *query = new QSqlQuery(db); 

我認爲這可以幫助你! :)