---
title: JAVA程式筆記-JDBC-增刪改查
tags: JAVA程式筆記
---
完成了JDBC-連接的connect
(重點)MySQL 8的URL要serverTimezone=UTC參數。+我有去看我的MYSQL在INTELLIJ是否有下載~https://hackmd.io/@sSA6NW2ZToCxgSaVETWNCg/BJLolkys8
來到~重要Connection
1.要先看看自己的資料庫裡面的表裏面有甚麼

2.新增數據庫連接的程式碼-新增語句對象
ResultSet resultSet=statement.executeQuery("")<-裡面的sql是INTELLIJ自己跳出來的,只有打""(看別人的資料時)

String sql="select userid,name from user";這個打的方法是從底打回來的

變數結果集->為TRUE找到數據

程式碼:
https://gist.github.com/jzs2home/0d955c5f91eb8e45675af06dfff7b520
---
回到CMD的資料庫select*from user;-要在裡面加人名,不然會沒東西

這裡建的方法我要找WORKBENCH來幫忙(跟CMD之間不會衝突都可以用)
https://hackmd.io/8PJeTM7WQAW8GYv-xp5JXQ

想要建的表

找WORKBENCH來幫忙新增
如果要改TYPE裡的varchart(20)=限定20個字+int(11),NULL是YES
和NULL的內容只能刪除重建-not null 是不能空.沒打就能空(沒有名子也可以)

語法參考https://ithelp.ithome.com.tw/articles/10216290
還有我的上一篇https://hackmd.io/qpamKhSlQmqFwcSpGf9ARA

要在裡面加入人名要用insert語句

再回到intellij 跑一下MAIN 就有資料了喔~

程式碼:https://gist.github.com/jzs2home/c847e60fa6290dc2061cf65165402c52
---
CRUD=增刪改查
先用CMD來查(有7步驟,程式碼排的順序也要改變,不然會無限迴圈=找不到=失敗)-改到前面=獲得數據庫連接+加上靜態代碼塊static
static String url="jdbc:mysql://localhost:3306/MyDB?serverTimezone=UTC";
static String user="root";
static String password="密碼";
---加上靜態代碼塊static{}也是往上移
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("加載驅動程式成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("加載驅動程式失敗");
return;
}
---原來的 Statement statement=connection.createStatement();要改掉
Connection connection = DriverManager.getConnection(url, user, password);
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery())
無條件查詢-數字最大的userid(可以確認自己的資料庫是沒有問題的)

然後再拿到JAVA代碼中測試,還要給一個變數maxId

程式碼:https://gist.github.com/jzs2home/4697bd621e8a9b6e557acf5edea95647
---
有條件查詢-查userid>0(可以確認自己的資料庫是沒有問題的)

select name,userid from user where userid>0 order by userid;
的0要改成用英文輸入法的?
然後再拿到JAVA代碼中測試,還要變換語法=語法不固定....QQ
preparedStatement.setInt(1,0);綁定參數順序=從1開始,
要有read();才會有RUN出東西~不然只會在無條件查詢結果

程式碼:https://gist.github.com/jzs2home/ea28a4406f8b0358a620d48d7fe1df7a
---
數據修改操作

插入(可以確認自己的資料庫是沒有問題的)=create();

insert into user(userid,name) values (3,'huangtzutzu');的(3,'huangtzutzu')在JAVA代碼中變(?,?)然後語法也跟樓上不同~QQ

然後ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.printf("name:%s id:%d \n",resultSet.
getString("name"),
resultSet.getInt("userid"));
}
通通不需要~@@

改後的程式碼:https://gist.github.com/jzs2home/5b95c3444c77a3d516d1bd2699a3627d
給一個變數maxUserId除了可以查出原來的數值也加入了~
然後再用CMD看一下

---
更新 update();

確認自己的資料庫是沒有問題的= update();

再拿到JAVA代碼中測試
update user set name='littletzu' where userid>3;又要改成?
update user set name=? where userid>?;

成功更新2數據.=2個

程式碼:https://gist.github.com/jzs2home/7fab1d02fab41bfcea13f70135f12c2f
---
刪除-要刪除最大的userid
確認自己的資料庫是沒有問題的=delete

再拿到JAVA代碼中測試delete from user where userid=5;的5也是改成delete from user where userid=?;

程式碼:https://gist.github.com/jzs2home/f259161a92400484bcd0c2a21da4dd31
---
看起來沒差別

是因為read();
create();
update();
delete();
全開~把 create();
update();關了=//就會發現不同

聽說JDBC還有模板設計模式:https://hackmd.io/@sSA6NW2ZToCxgSaVETWNCg/HJ3V79q38