2012-05-31 24 views
0

我只是想知道的是爲什麼會在驅動程序管理器類提供了許多重載 方法來獲取連接到數據庫。其中有些是這兩個getConnection方法之一是更好地DriverManager類使用

getConnection(String url, String user, String password) 
getConnection(String url, Properties info) 

的其他人可以在http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/DriverManager.html

找到你需要有一組相同的信息,你在每種情況下數據庫 連接前手,但每個getConnection()方法有以不同的方式訪問該信息。我已經看到人們使用它們都沒有任何特定的偏好(就我而言)。

我的問題是存在的編碼風格,因爲其中使用一種可優於其他方面的任何偏好。如果不是這種超載是多餘的?

回答

1

技術上的getConnection(String url, Properties info)一個更乾淨,如果您以編程方式收集的驅動程序屬性。最初的想法是,人們會使用GUI配置的驅動程序,使用Driver接口的getPropertyInfo方法收集的選擇和配置在GUI中所有可能的屬性。

然後,您只需存儲(基本)JDBC URL和一個帶有所有驅動程序屬性(或屬性對象的(序列化)副本)的文件以建立連接。我不確定是否有人以這種方式使用過它。 (AFAIK),人們更喜歡將JDBC URL與所有屬性一起存儲爲URL的一部分,並分別使用用戶名和密碼,因此使用getConnection(String url, String user, String password)或甚至0123',包括用戶名和密碼在URL中。

在JDBC 2(標準擴展)中引入了DataSource,我相信甚至有人會討論棄用並最終刪除DriverManager,以便始終使用DataSources(因爲它們使用了JavaBeans配置類型);儘管實際上從未發生過。

+0

謝謝!很好的答案 –

0

如果您只需要提供用戶名和密碼,第一種形式是preferrable,因爲它是強類型的,只是......短。

後者,如果你需要一些額外的參數,在高層次的API沒有描述必須使用。

+0

你能舉例說明一下嗎?我明白了這一點,但我無法想象任何例子都是有道理的。 –

+0

我寧願推薦DataSource查找。 – Sajmon

相關問題