我正在使用Qt-Framework开发Windows服务,但无法连接到数据库(PostgreSQL)。
但是我有一个客户端应用程序,其中使用了完全相同的数据库连接,并且可以正常工作。
//driver
mDB = QSqlDatabase::addDatabase("QPSQL");
//connection
void Monitoring::DbConnection(QSqlDatabase mDB)
{
mDB.setHostName("localhost");
mDB.setDatabaseName("testdb");
mDB.setPort(5432);
mDB.setPassword("test");
mDB.setUserName("12345");
if (!mDB.open()) {
qDebug() << "Database Error ! " << mDB.lastError();
mMessagebox.critical(0, "Error", "An Error occurred! "
+ mDB.lastError().text());
qApp->exit();
}
}
lastError说:
无法将主机名“ localhost”转换为地址:未知服务器 错误
我想念什么?
预先感谢
答案 0 :(得分:0)
当您传递参数时,您正在为对象创建副本,也许=
运算符未复制所有数据。
在参数中使用&
并尝试以下代码:
//connection
void Monitoring::DbConnection(QSqlDatabase& mDB)
{
mDB.setHostName("127.0.0.1");
mDB.setDatabaseName("testdb");
mDB.setPort(5432);
mDB.setPassword("test");
mDB.setUserName("12345");
if (!mDB.open()) {
qDebug() << "Database Error ! " << mDB.lastError();
mMessagebox.critical(0, "Error", "An Error occurred! "
+ mDB.lastError().text());
qApp->exit();
}
}