--- 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