我正在使用Qt连接数据库(到目前为止使用PostgreSQL和MySQL),并且对端口的工作方式有点困惑。如果这有所帮助,我正在使用Ubuntu。我的数据库如何连接而不设置端口?
根据此处的文档:http://doc.qt.nokia.com/4.8-snapshot/qsqldatabase.html#setPort端口没有默认值。不过,我注意到我的设置,我实际上并没有设置端口,但它仍然没有问题连接。
所以我把它设置了这样的:
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("mydb");
db.setUserName("name");
db.setPassword("pass");
其中一期工程(我曾尝试与MySQL驱动程序太)
它还如果我这样做的工作:db.setPort(-1);
或为我所期望的使用默认端口:db.setPort(5432);
但其他端口不工作,这是预期的。所以,鉴于它表示没有默认的端口值,-1显然不是有效的端口,它是如何工作的?
我会怀疑,如果你没有明确地设置端口(或者将其设置为完全无效),QSqlDatabase.open()中的代码将使用数据库/驱动程序类型的默认已知端口号。要检查我的理论,您可以尝试更改数据库运行的端口,然后尝试再次运行代码。 – 2012-07-27 08:35:03