
JDBC 連線 URL 模式
這篇呢!就單獨來聊連線的 url
阿我完全就是照著官方的介紹,如果覺得我寫的不好懂,也可以直接看官網!
這是通用的連線表示法
protocol//[hosts][/database][?properties]
看到這一串滿討厭的… 我們可以把它分開了看 可以發現他其實… 還真的滿討厭的
- protocol
- hosts
- databases
- properties
protocol
顧名思義,就是連線的協議囉!官方一樣有幫我們列出以下可能出現的協議
- jdbc:mysql: 這是最常見、最普通的連線方法
- jdbc:mysql:loadbalance: 給有做負載均衡的 JDBC 連線使用
- jdbc:mysql:replication: 給有做 replication 的 JDBC 連線使用
- mysqlx: 給 X DevAPI 的連線
- jdbc:mysql+srv: 給有使用 SRV records 的 JDBC 連線使用
- jdbc:mysql+srv:loadbalance: 給有負載均衡 同時有 SRV records 的 JDBC 連線使用
- jdbc:mysql+srv:replication: 給有做 replication 同時有 SRV record 的 JDBC 連線使用
- mysqlx+srv: 給有 X DevAPI 同時有 SRV record 的連線使用
阿其實協議這麼多種,我們這次會用到的也就只有第一種 jdbc:mysql 而已啦~
其他要用到的時候再去看就好
hosts
依不同的情況,hosts 的定義可能有不同的表示:
- 單一主機位置 ( single host )
- 多主機位置 ( multiple host )
- 埠號 ( port )
- 主機特定屬性 ( host-specific properties )
- 使用者憑證 ( user credentials ) 其實也就是認帳號密碼啦
單一主機位置
jdbc:mysql://127.0.0.1:4099/neon
其中的 127.0.0.1:4099 就是主機位置
host 可以是 IPv4 或是 IPv6,若是在 IPv6 的情況下,必須寫在方括號內 [::1]
( 雖然文件上說要寫在方括號內,但我實際測試好像不用 [::1] 跟 ::1 都是過的,不管如何 寫在方括號內比較整齊,我們還是都寫在方括號內吧! )
jdbc:mysql://[::1]:4099/neon jdbc:mysql://::1:4099/neon
那 port 的話就是標準的埠號, 1 ~ 65535 都可以使用,
如果不指定,預設是 3306,
阿如果是使用 X Protocol,預設是 33060。( 我也不太清楚 X Protocol 是什麼 )
📗 埠號的話 0 ~ 1024 還是不要亂用比較號,就從 1025 開始使用吧!
多主機位置
其實不複雜,只要在 host 那段用逗號隔開就好了!
host1,host2,host3,...,hostN
阿這個就比較特殊了,可以有多種表示方法,來幾個範例吧!
jdbc:mysql://127.0.0.1:4089,127.0.0.1:4090/neon jdbc:mysql://address=(host=127.0.0.1)(port=4089),address=(host=127.0.0.1)(port=4090)/neon jdbc:mysql://(host=127.0.0.1,port=4089),(host=127.0.0.1,port=4090)/neon jdbc:mysql://127.0.0.1:4089,(host=127.0.0.1,port=4090)/neon
阿同樣,可以包在中括號 [ ] 裡面
jdbc:mysql://[127.0.0.1:4089,(host=127.0.0.1,port=4090)]/neon
使用者憑證
之前我們寫的帳號密碼是這樣進行驗證的
DriverManager.getConnection("jdbc:mysql://127.0.0.1:4089/neon", "wayne", "xxx");
但其實可以寫在 url 裡面
"jdbc:mysql://wayne:xxx@127.0.0.1:4089/neon"
或是這樣
"jdbc:mysql://address=(host=127.0.0.1)(port=4089)(user=wayne)(password=test1234)/neon"
database
如果沒有指定連線的資料庫,預設就是「不指定資料庫」
之後要查詢的話就是多指定資料庫名稱在 SQL 語法中而已
Select * From dbname.tableName;
要指定的話就是這樣
jdbc:mysql://127.0.0.1:4099/neon
最後面的 neon 就是 db 的名稱了
properties
這個的話本人我就沒有用到很多了!但還是筆記一下
用法的話就是在 ? 後面加 key=value 如果有多組的話用 & 隔開 ( 其實就跟我們常用在網頁 uri 的那個很像啦~ )
jdbc:mysql://127.0.0.1:4099/neon?key1=value&key2=value2&key3=value3
阿稍微注意一下 key 是區分大小寫的哦!!
No Comment