#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("lab");
db.setUserName("dbuser");
db.setPassword("dbpw");
if (! db.open()) {
qDebug()<<"DB connection error; " << db.lastError().text();
}
return a.exec();
}
編譯執行後,出現QSqlDatabase: QPSQL driver not loaded
原因是因為 QT 沒有將必要的DLL放在程式目錄內,解決之道有幾個,第一個是到 Postgres SQL目錄下的bin把下列幾個檔案複製到新創的專案目錄去
libeay32.dll
libiconv-2.dll
libintl-8.dll
libpq.dll
ssleay32.dll
另外,依照專案編譯的形式,還要把
qsqlpsql.dll (Release)
qsqlpsqld.dll (Debug)
複製到專案目錄去
第二個比較簡單,把Postgres SQL的bin目錄設定到Windows的path即可,但這只是可以在開發者的電腦上執行,打包給用戶時,還是要把必要的DLL複製進來才行。