多年來我已經使用JDBC連接到許多不同的關係系統:H2,HSQLDB,MySQL,Oracle,Postgres等。並且在每種情況下,每個系統似乎都有擁有自己的連接字符串語法的味道。JDBC連接字符串語法和解析
我無法想象像JDBC 這樣的長期API不會爲擁有一個用於連接字符串驗證的定義的強制語法。例如:
一些有效的HSQLDB連接字符串:
jdbc:hsqldb:mem:mymemdb
jdbc:hsqldb:res:org.my.path.resdb
jdbc:hsqldb:file:/opt/db/testdb
的MySQL:
jdbc:mysql://localhost/test
Postgres的:
jdbc:postgresql://localhost/test
H2:
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:tcp://dbserv:8084/~/sample
從所有這些例子中,我收集了基本的,普遍語法:
jdbc:<vendor>:<vendor-specific-uri>
哪裏<vendor>
是系統(h2
,mysql
等)的名稱,<vendor-specific-uri>
是路徑或者一些特定的供應商確定數據庫位置的方法。
我已經做了大量的挖掘工作,對於我來說,我似乎無法找到JDBC定義有效連接字符串語法的位置。具體來說:
- 什麼是有效的JDBC連接字符串的一般語法/定義?
- 連接字符串中每個令牌/組件的不同名稱是什麼?例如,「
jdbc:
」被稱爲某事物,如「JDBC協議」?我的<vendor>
和<vendor-specific-uri>
細分市場的名稱是什麼?
謝謝@Lutz Horn(+1) - 這對我來說實際上有點令人震驚。那麼,基於acceptUrl(...)的JavaDoc,可以肯定的是,JDBC連接字符串的形式語法/解析是:'jdbc:/:''? –
IAmYourFaja
2014-12-09 14:03:59
我編輯了我的答案。 – 2014-12-09 14:13:17
JDBC規範實際上指定'jdbc::',但它並不在'DriverManager'中強制執行。 –
2014-12-09 16:24:56