我正在使用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