JDBC 連線 URL 模式

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 是區分大小寫的哦!!

wayne

No Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

文章分類