---
# System prepended metadata

title: JAVA程式筆記-JDBC-連接的connect
tags: [JAVA程式筆記]

---

---
title:  JAVA程式筆記-JDBC-連接的connect
tags: JAVA程式筆記
---
EL(表達式語言)
http://akuma1.pixnet.net/blog/post/222233581-%E8%AA%B2%E7%A8%8B%E5%9F%BA%E7%A4%8E%E8%A8%93%E7%B7%B4%EF%BC%8D%EF%BC%8D%2803%29-jsp%E3%80%81el%E3%80%81jstl
長這樣->${表達式語言}
可以用.和[]兩種運算符來取數據

取值是有順序的:頁面(pageScope)->請求(requestScope)->會話(sessionScope)->應用程序(applicationScope)

自動轉變類型:自動轉變成符點數/整數
EL運算符:div是除~的意思

---
JSTL(聽說現在沒再用了?)
安裝需要下載API+IMPL

---
JDBC:JAVA+開發安裝+數據庫
我之前原本安裝的MYSQL(COMMUNITY版)發現按照課本的程式碼(感覺是被綁死在一個迴圈)居然不能成功連，我在想應該是安裝設定時勾選的選項不同，而且我也沒有進入cmd+環境變量去設定，所以決定砍掉重裝一次好了~

---
再來複習一次MYSQL的操作+語法(用Mysql workbench 來練習):https://hackmd.io/@sSA6NW2ZToCxgSaVETWNCg/HyGIOu-oL
---
雖然說有人說ORCAL的SQL是要錢的，但是聽說練習不用，來練練:
https://hackmd.io/@sSA6NW2ZToCxgSaVETWNCg/BJH_dOWi8
---
因為其實cmd的指令是很實用的~(有WORKBENCH-也是可以使用cmd操作)
1.下載網址(現在應該大家都是64bit了.32之後聽說也不更新)-https://dev.mysql.com/downloads/mysql/
參考~https://clay-atlas.com/blog/2019/11/16/mysql-mysqlworkbench-tutorial-download-install-steps/
2.下載MySQL Connectors(這裡是驅動程序)-因為我們是學JAVA，所以下載JDBC Driver for MySQL (Connector/J)https://dev.mysql.com/downloads/connector/j/
3.用CMD使用MYSQL:
https://hackmd.io/@sSA6NW2ZToCxgSaVETWNCg/SyO4L-IsU
---
正式來練習JDBC~
要注意很雷的地方:
1.mysql要打好~不然到JDBC錯誤也無法發現
2.要連接的connect 也會因為版本號不同而要打的JDBC語法也不同
![](https://i.imgur.com/BifDuXR.jpg)
聽說不推薦最新的~QQ
下載處:https://dev.mysql.com/downloads/connector/j/
![](https://i.imgur.com/jm5bpwt.png)
會自動跳轉到要登入~登入不用錢
發現居然不是.EXE檔
![](https://i.imgur.com/KRIBWfr.png)
原來~下載jar檔就對了(在一些課本/影片中看到是EXE，但是導到INTELLIJ就是.JAR檔)，java中需要第3方庫事實上就是jar
檔，然後將jar檔配置到CLASSSPATH中。

---
實作上是選JAVA就好(還不會WEB也可以練)~不用再選JAVAEE
![](https://i.imgur.com/Ak0H8Q9.png)
要記得V
![](https://i.imgur.com/gcZ2vPO.png)
命名
![](https://i.imgur.com/VqdH3RL.jpg)
長好的應該要長這樣~一定要有PACKAGE不然會不能RUN
然後//這個是聽說要刪，不然會長出奇怪的東西
![](https://i.imgur.com/gaji8i1.png)
然後將jar檔配置到CLASSSPATH中:
1.BUILD一個OUT資料夾(找不到MAIN主類)
![](https://i.imgur.com/Uzsom5r.png)

結果~長出OUT
![](https://i.imgur.com/OTW3PYS.jpg)

2.先建一個LIB，然後就可以放入jar檔配置到CLASSSPATH中
![](https://i.imgur.com/jSyYpk8.png)
按ENTER才會建立
![](https://i.imgur.com/J7vbl11.jpg)
結果~
![](https://i.imgur.com/j8q8clN.jpg)
選到mysql-connector-java-8.0.20.jar複製到LIB貼上
![](https://i.imgur.com/S4hhzIj.jpg)
然後按refactoring（重構）的定義就是：「在不改變軟體的外在行為之下，改善既有軟體的內部設計」。=OK
![](https://i.imgur.com/ciwDrPN.jpg)
按右鍵到最下面的
![](https://i.imgur.com/fMnfgpm.png)
出現~按OK
![](https://i.imgur.com/gxm6xnB.jpg)
檢查看看自己的LIB裡面有甚麼
![](https://i.imgur.com/DrBsySz.jpg)
有了~
![](https://i.imgur.com/WVJE4Oo.jpg)
因為版本號不同而要打的JDBC語法也不同的~
8.0版的是com.mysql.cj.jdbc.Driver
5.1版的是com.mysql.jdbc.Driver(目前的課本好像就是這個)
讓他自己產生TRY/CATCH(其實要練打字也可以就是不要打錯)
![](https://i.imgur.com/OFbI4YC.png)
沒錯就是找到connect~
![](https://i.imgur.com/UIZAJlf.jpg)
語法:https://gist.github.com/jzs2home/de589322640b07187bb4bdb7d31fd6b1
---
1.建立數據庫連接
使用不同的數據庫就會有不同的驅動程序和URL
https://www.cnblogs.com/yangming1996/p/6666217.html
---
MYSQL
8.0版的是com.mysql.cj.jdbc.Driver
5.1版的是com.mysql.jdbc.Driver(目前的課本好像就是這個)

獲得數據庫連接
---
裝載Oracle驅動：Class.forName("oracle.jdbc.driver.OracleDriver"); 
裝載MS SqlServer驅動：Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

---
URL，他的格式是：jdbc:<子協議>:<子名稱>，這種格式基本上也是被每個資料庫提供商定死了，你只需要選擇他們並增加自己的參數即可。常見的三個URL格式：
對於 Oracle 資料庫連接，採用如下形式：
jdbc:oracle:thin:@localhost:1521:數據庫名稱

對於 SQLServer 資料庫連接，採用如下形式：
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=數據庫名稱

對於 MYSQL 資料庫連接，採用如下形式：
jdbc:mysql://localhost:3306/數據庫名稱
5.1版的String url="jdbc:mysql://localhost:3306/mydb?verifyServerCertificate=false&useSSL=false";
用cmd看看自己的數據庫有哪些create database mydb;有創建一個mydb數據庫
![](https://i.imgur.com/PaKC39T.jpg)

裡面再創建一個user表
create table user(
    -> name varchar(20) not null,
    -> userid int primary key);
![](https://i.imgur.com/gp4FUXZ.jpg)

---
![](https://i.imgur.com/YFEjo0n.jpg)
這裡使用 MYSQL 資料庫連接~這裡也是一個雷~發現不同版本的後面居然不同~
我最後是用tring url="jdbc:mysql://localhost:3306/MyDB?serverTimezone=UTC";來解決的，居然跟時區有關@@
故事是這樣的~
我一開始打的程式碼:
用5.0試試結果X因為我的是8.0之後的所以不行
![](https://i.imgur.com/I6VK2MT.jpg)
一直以為USE PASSWORD的YES是密碼正確，結果是密碼錯誤(因為大小寫不同)
![](https://i.imgur.com/cYLII8V.jpg)

我還去看了INTELLIJ連MYSQL的方法:
https://juejin.im/post/5e0d3b196fb9a048526aa42e
![](https://i.imgur.com/CnETemi.jpg)
努力的讓魚可以連上
![](https://i.imgur.com/8JFENw4.jpg)


結果:jdbc:mysql://localhost:3306/MyDB?serverTimezone=UTC    
居然連資料庫都有駱駝式命名?打mydb是也可以只是會有毛毛蟲線
![](https://i.imgur.com/gVAFZkQ.png)
程式碼:
https://gist.github.com/jzs2home/799061b80fdd455297323a7ba4f60722

---
實作上是選JAVA就WEB也可以練~(我是用最新2020.1的INTELLIJ的畫面)
![](https://i.imgur.com/YPOMcX8.png)
覺得WEB的命名選擇也是一個很容易迷路的地方->按FINISH
![](https://i.imgur.com/VJRvKCY.png)
選擇NEW WINDOWS 開始
![](https://i.imgur.com/jdUruGm.jpg)
一個新的WEB是長這樣
![](https://i.imgur.com/IRo34Ib.jpg)

---
再來就是為了測試而新增的SERVLET
![](https://i.imgur.com/UfbiWYO.png)
覺得SERVLET的命名選擇也是一個很容易迷路的地方~要記得V
![](https://i.imgur.com/KFuMNWV.jpg)
產生的SERVLET反紅就是要導入~LIB=下載JAVAEE的包
![](https://i.imgur.com/IHjMFi0.jpg)
完成後就不會反紅了~
![](https://i.imgur.com/pnHmd1z.jpg)
選到mysql-connector-java-8.0.20.jar複製到WEB裡面的WEB-INF下創建的資料夾LIB(要自己加)貼上
![](https://i.imgur.com/z2qOiPp.png)
才後再加入ADD
![](https://i.imgur.com/vUEV8mm.png)
按OK
![](https://i.imgur.com/j4jzcfF.jpg)

我目前TOMCAT的設定
![](https://i.imgur.com/3qVuYiG.png)
按FIX到
![](https://i.imgur.com/t7h7msd.png)
按OK
![](https://i.imgur.com/i5AOm61.jpg)
看看自己現在連的狀況~太多就按STOP，才不會顯示被占用
![](https://i.imgur.com/SGIDHbF.png)


按.jsp檔來看成果
![](https://i.imgur.com/ZelhLiR.png)


語法:
https://gist.github.com/jzs2home/1c79dabca4a27c1fa43a0ec9611e91fb
---
3.發生錯誤要看是自己的connect錯誤還是mysql還是JDBC語法錯誤


做好連線之後當然就是JDBC-增刪改查:
https://hackmd.io/@sSA6NW2ZToCxgSaVETWNCg/HJaAptfnU