2014-01-24 65 views
0

我試圖用qt設置dsn,但我無法使其工作。 dsn與isql一起工作。 我使用的是Ubuntu 12.04爲什麼qt在dsn時仍然會查找db字符串?

POSTGRES是dsn。

連接線:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); 
db.setHostName("localhost"); 
db.setDatabaseName("POSTGRES"); 

錯誤: FATAL:數據庫 「POSTGRES」 不存在。

我不明白爲什麼qt不會查找後面的數據庫。我製作了符號鏈接(usr/local/etc)到odbc.ini,並有odbcinst.ini以及sqli與POSTGRES dsn一起工作。

也許qt會在哪裏尋找這些文件?谷歌搜索3天現在沒有成功 我有點放棄無法解決這個謝謝你的任何幫助。

回答

0

我相信你的問題是你使用了錯誤的驅動程序。按照Qt documentation,你需要使用ODBC驅動程序的DSN文件的工作 - 例如:

db = QSqlDatabase::addDatabase("QODBC");

還要注意的是,再根據Qt documentation,如果你想傳遞一個DSN文件名setDatabaseName,那麼它必須有一個「.DSN」文件擴展名:

For the QODBC driver, the name can either be a DSN, a DSN filename (in which case the file must have a .dsn extension), or a connection string.

最後,它必須在ODBC.INI上市。

+0

對我來說,qt裏面的dsn只會與QODBC一起工作,即使dsn有db的名字,它也不會與QPSQL等其他驅動程序一起工作 – Laars

相關問題