日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

java jdbc 连接mysql数据库 实现增删改查

發(fā)布時(shí)間:2025/3/17 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jdbc 连接mysql数据库 实现增删改查 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

好久沒(méi)有寫(xiě)博文了,寫(xiě)個(gè)簡(jiǎn)單的東西熱熱身,分享給大家。

jdbc相信大家都不陌生,只要是個(gè)搞java的,最初接觸j2ee的時(shí)候都是要學(xué)習(xí)這么個(gè)東西的,誰(shuí)叫程序得和數(shù)據(jù)庫(kù)打交道呢!而jdbc就是和數(shù)據(jù)庫(kù)打交道非常基礎(chǔ)的一個(gè)知識(shí),也是比較接近底層的,在實(shí)際的工作中大家用得更多的其實(shí)還是比較成熟的框架,例如Hibernate、Mybatis。

但是作為這些成熟框架的底層的jdbc卻也是我們應(yīng)該去掌握的,只有了解了jdbc的增刪改查,這樣在以后如果有興趣去研究Hibernate或者M(jìn)ybatis的源代碼的時(shí)候才能更好的去理解這些成熟的框架是如何去實(shí)現(xiàn)增刪改查的。

回歸正題,先來(lái)看看我們的開(kāi)發(fā)環(huán)境:

Java語(yǔ)言、Eclipse開(kāi)發(fā)工具、Mysql數(shù)據(jù)庫(kù)、Navicat數(shù)據(jù)庫(kù)可視化工具。

開(kāi)發(fā)環(huán)境的安裝搭建及使用請(qǐng)自己查閱資料(很簡(jiǎn)單的),這里不詳細(xì)闡述。

第一步,創(chuàng)建數(shù)據(jù)庫(kù),利用Navicat數(shù)據(jù)庫(kù)可視化工具隨便建立一個(gè)數(shù)據(jù)庫(kù),在庫(kù)中建立一張表,表里給幾個(gè)字段(記得給個(gè)id字段,唯一主鍵,自增序列),再隨便給上兩條數(shù)據(jù)便好,用來(lái)測(cè)試功能,如圖:

?

第二步,打通數(shù)據(jù)庫(kù)(這個(gè)例子希望大家自己動(dòng)手敲敲,耽誤不了多少時(shí)間,熟悉一下jdbc如何和數(shù)據(jù)庫(kù)打交道,故以圖示之),如圖:

?

第三步,改造DBUtil類(lèi),方便在dao層獲得數(shù)據(jù)庫(kù)的連接,代碼如下:

1 package com.czgo.db;2 3 import java.sql.Connection;4 import java.sql.DriverManager;5 import java.sql.SQLException;6 7 public class DBUtil8 { 9 private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc"; 10 private static final String UNAME = "root"; 11 private static final String PWD = "root"; 12 13 private static Connection conn = null; 14 15 static 16 { 17 try 18 { 19 // 1.加載驅(qū)動(dòng)程序 20 Class.forName("com.mysql.jdbc.Driver"); 21 // 2.獲得數(shù)據(jù)庫(kù)的連接 22 conn = DriverManager.getConnection(URL, UNAME, PWD); 23 } 24 catch (ClassNotFoundException e) 25 { 26 e.printStackTrace(); 27 } 28 catch (SQLException e) 29 { 30 e.printStackTrace(); 31 } 32 } 33 34 public static Connection getConnection() 35 { 36 return conn; 37 } 38 }

?

第四步,創(chuàng)建實(shí)體類(lèi)(如上圖,大家觀(guān)察包的分配,我們將采用MVC思想設(shè)計(jì)本實(shí)例,有關(guān)于mvc的設(shè)計(jì)思想,請(qǐng)大家自行學(xué)習(xí),這里不多說(shuō))代碼如下:

1 package com.czgo.model;2 3 import java.io.Serializable;4 5 /**6 * 實(shí)體類(lèi):女神類(lèi)7 * 8 * @author AlanLee9 * 10 */ 11 public class Goddess implements Serializable 12 { 13 private static final long serialVersionUID = 1L; 14 15 /** 16 * 唯一主鍵 17 */ 18 private Integer id; 19 /** 20 * 姓名 21 */ 22 private String name; 23 /** 24 * 手機(jī)號(hào)碼 25 */ 26 private String mobie; 27 /** 28 * 電子郵件 29 */ 30 private String email; 31 /** 32 * 家庭住址 33 */ 34 private String address; 35 36 public Integer getId() 37 { 38 return id; 39 } 40 41 public void setId(Integer id) 42 { 43 this.id = id; 44 } 45 46 public String getName() 47 { 48 return name; 49 } 50 51 public void setName(String name) 52 { 53 this.name = name; 54 } 55 56 public String getMobie() 57 { 58 return mobie; 59 } 60 61 public void setMobie(String mobie) 62 { 63 this.mobie = mobie; 64 } 65 66 public String getEmail() 67 { 68 return email; 69 } 70 71 public void setEmail(String email) 72 { 73 this.email = email; 74 } 75 76 public String getAddress() 77 { 78 return address; 79 } 80 81 public void setAddress(String address) 82 { 83 this.address = address; 84 } 85 }

第五步,dao層的實(shí)現(xiàn)(這里由于是小例子沒(méi)有寫(xiě)dao接口,實(shí)際工作中大型項(xiàng)目應(yīng)該是要寫(xiě)dao接口的,便于程序的維護(hù)和擴(kuò)展),代碼如下:

1 package com.czgo.dao; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import com.czgo.db.DBUtil; 11 import com.czgo.model.Goddess; 12 13 /** 14 * 數(shù)據(jù)層處理類(lèi) 15 * 16 * @author AlanLee 17 * 18 */ 19 public class GoddessDao 20 { 21 /** 22 * 查詢(xún)?nèi)颗? 23 * 24 * @return 25 * @throws SQLException 26 */ 27 public List<Goddess> query() 28 { 29 List<Goddess> goddessList = new ArrayList<Goddess>(); 30 31 // 獲得數(shù)據(jù)庫(kù)連接 32 Connection conn = null; 33 ResultSet rs = null; 34 PreparedStatement ptmt = null; 35 36 try 37 { 38 conn = DBUtil.getConnection(); 39 40 StringBuilder sb = new StringBuilder(); 41 sb.append("select id,name,mobie,email,address from goddess"); 42 43 // 通過(guò)數(shù)據(jù)庫(kù)的連接操作數(shù)據(jù)庫(kù),實(shí)現(xiàn)增刪改查 44 ptmt = conn.prepareStatement(sb.toString()); 45 46 rs = ptmt.executeQuery(); 47 48 Goddess goddess = null; 49 50 while (rs.next()) 51 { 52 goddess = new Goddess(); 53 goddess.setId(rs.getInt("id")); 54 goddess.setName(rs.getString("name")); 55 goddess.setMobie(rs.getString("mobie")); 56 goddess.setEmail(rs.getString("email")); 57 goddess.setAddress(rs.getString("address")); 58 59 goddessList.add(goddess); 60 } 61 } 62 catch (SQLException e) 63 { 64 e.printStackTrace(); 65 } 66 finally 67 { 68 69 try 70 { 71 if (rs != null) 72 { 73 rs.close(); 74 } 75 if (ptmt != null) 76 { 77 ptmt.close(); 78 } 79 } 80 catch (SQLException e) 81 { 82 e.printStackTrace(); 83 } 84 } 85 86 return goddessList; 87 } 88 89 /** 90 * 查詢(xún)單個(gè)女神 91 * 92 * @return 93 * @throws SQLException 94 */ 95 public Goddess queryById(Integer id) 96 { 97 Goddess g = null; 98 99 Connection conn = null; 100 PreparedStatement ptmt = null; 101 ResultSet rs = null; 102 103 try 104 { 105 conn = DBUtil.getConnection(); 106 107 String sql = "" + " select * from imooc_goddess " + " where id=? "; 108 109 ptmt = conn.prepareStatement(sql); 110 111 ptmt.setInt(1, id); 112 113 rs = ptmt.executeQuery(); 114 115 while (rs.next()) 116 { 117 g = new Goddess(); 118 g.setId(rs.getInt("id")); 119 g.setName(rs.getString("name")); 120 g.setMobie(rs.getString("mobie")); 121 g.setEmail(rs.getString("email")); 122 g.setAddress(rs.getString("address")); 123 } 124 } 125 catch (SQLException e) 126 { 127 e.printStackTrace(); 128 } 129 finally 130 { 131 try 132 { 133 if (rs != null) 134 { 135 rs.close(); 136 } 137 if (ptmt != null) 138 { 139 ptmt.close(); 140 } 141 } 142 catch (SQLException e) 143 { 144 e.printStackTrace(); 145 } 146 } 147 148 return g; 149 } 150 151 /** 152 * 添加女神 153 * 154 * @throws SQLException 155 */ 156 public void addGoddess(Goddess goddess) 157 { 158 // 獲得數(shù)據(jù)庫(kù)連接 159 Connection conn = null; 160 PreparedStatement ptmt = null; 161 162 try 163 { 164 conn = DBUtil.getConnection(); 165 166 String sql = "insert into goddess(name,mobie,email,address) values(?,?,?,?)"; 167 168 ptmt = conn.prepareStatement(sql); 169 170 ptmt.setString(1, goddess.getName()); 171 ptmt.setString(2, goddess.getMobie()); 172 ptmt.setString(3, goddess.getEmail()); 173 ptmt.setString(4, goddess.getAddress()); 174 175 ptmt.execute(); 176 } 177 catch (SQLException e) 178 { 179 e.printStackTrace(); 180 } 181 finally 182 { 183 try 184 { 185 if (ptmt != null) 186 { 187 ptmt.close(); 188 } 189 } 190 catch (SQLException e) 191 { 192 e.printStackTrace(); 193 } 194 } 195 } 196 197 /** 198 * 修改女神資料 199 * 200 * @throws SQLException 201 */ 202 public void updateGoddess(Goddess goddess) 203 { 204 Connection conn = null; 205 PreparedStatement ptmt = null; 206 207 try 208 { 209 conn = DBUtil.getConnection(); 210 211 String sql = "update goddess set name=?,mobie=?,email=?,address=? where id=?"; 212 213 ptmt = conn.prepareStatement(sql); 214 215 ptmt.setString(1, goddess.getName()); 216 ptmt.setString(2, goddess.getMobie()); 217 ptmt.setString(3, goddess.getEmail()); 218 ptmt.setString(4, goddess.getAddress()); 219 220 ptmt.execute(); 221 } 222 catch (SQLException e) 223 { 224 e.printStackTrace(); 225 } 226 finally 227 { 228 try 229 { 230 if (ptmt != null) 231 { 232 ptmt.close(); 233 } 234 } 235 catch (SQLException e) 236 { 237 e.printStackTrace(); 238 } 239 } 240 } 241 242 /** 243 * 刪除女神 244 * 245 * @throws SQLException 246 */ 247 public void deleteGoddess(Integer id) 248 { 249 Connection conn = null; 250 PreparedStatement ptmt = null; 251 252 try 253 { 254 conn = DBUtil.getConnection(); 255 256 String sql = "delete from goddess where id=?"; 257 258 ptmt = conn.prepareStatement(sql); 259 260 ptmt.setInt(1, id); 261 262 ptmt.execute(); 263 } 264 catch (SQLException e) 265 { 266 e.printStackTrace(); 267 } 268 finally 269 { 270 try 271 { 272 if (ptmt != null) 273 { 274 ptmt.close(); 275 } 276 } 277 catch (SQLException e) 278 { 279 e.printStackTrace(); 280 } 281 } 282 } 283 }

?

第六步,控制層的實(shí)現(xiàn)(控制層在此處用來(lái)模仿控制層和界面,直接在這里構(gòu)建數(shù)據(jù),如果是界面的數(shù)據(jù)則通過(guò)請(qǐng)求傳遞接收參數(shù)即可,控制層的代碼大家可以根據(jù)實(shí)際情況去更改完善,這里只是給大家拋磚引玉,做個(gè)簡(jiǎn)單的測(cè)試,時(shí)間比較緊,希望大家理解),代碼如下:

1 package com.czgo.action;2 3 import java.sql.SQLException;4 import java.util.List;5 6 import com.czgo.dao.GoddessDao;7 import com.czgo.model.Goddess;8 9 /** 10 * 控制層,直接在這里構(gòu)建數(shù)據(jù),界面的數(shù)據(jù)則通過(guò)請(qǐng)求傳遞接收即可,亦是同理 11 * 12 * @author AlanLee 13 * 14 */ 15 public class GoddessAction 16 { 17 /** 18 * 新增女神 19 * 20 * @param goddess 21 * @throws Exception 22 */ 23 public void add(Goddess goddess) throws Exception 24 { 25 GoddessDao dao = new GoddessDao(); 26 goddess.setName("蒼井空"); 27 goddess.setMobie("52220000"); 28 goddess.setEmail("52220000@qq.com"); 29 goddess.setAddress("北京紅燈區(qū)"); 30 dao.addGoddess(goddess); 31 } 32 33 /** 34 * 查詢(xún)單個(gè)女神 35 * 36 * @param id 37 * @return 38 * @throws SQLException 39 */ 40 public Goddess get(Integer id) throws SQLException 41 { 42 GoddessDao dao = new GoddessDao(); 43 return dao.queryById(id); 44 } 45 46 /** 47 * 修改女神 48 * 49 * @param goddess 50 * @throws Exception 51 */ 52 public void edit(Goddess goddess) throws Exception 53 { 54 GoddessDao dao = new GoddessDao(); 55 dao.updateGoddess(goddess); 56 } 57 58 /** 59 * 刪除女神 60 * 61 * @param id 62 * @throws SQLException 63 */ 64 public void del(Integer id) throws SQLException 65 { 66 GoddessDao dao = new GoddessDao(); 67 dao.deleteGoddess(id); 68 } 69 70 /** 71 * 查詢(xún)?nèi)颗?72 * 73 * @return 74 * @throws Exception 75 */ 76 public List<Goddess> query() throws Exception 77 { 78 GoddessDao dao = new GoddessDao(); 79 return dao.query(); 80 } 81 82 /** 83 * 測(cè)試是否成功 84 * 85 * @param args 86 * @throws SQLException 87 */ 88 public static void main(String[] args) throws SQLException 89 { 90 GoddessDao goddessDao = new GoddessDao(); 91 92 List<Goddess> goddessList = goddessDao.query(); 93 94 for (Goddess goddess : goddessList) 95 { 96 System.out.println(goddess.getName() + "," + goddess.getMobie() + "," + goddess.getEmail()); 97 } 98 } 99 }

最后,讓我們看一下main方法的運(yùn)行結(jié)果是否成功:

這樣,一個(gè)簡(jiǎn)單的java jdbc 連接mysql數(shù)據(jù)庫(kù) 實(shí)現(xiàn)增刪改查便完成了,大家可以在查詢(xún)的基礎(chǔ)上試著去做一個(gè)高級(jí)查詢(xún),也就是多條件查詢(xún)來(lái)鞏固jdbc的使用。時(shí)間比較緊,所以沒(méi)有給大家一一測(cè)試增刪改查的功能,閑著沒(méi)事做蛋疼的可以都去測(cè)試一下,如果發(fā)現(xiàn)問(wèn)題,希望能夠指正小Alan,小Alan有空的時(shí)候便去修正博文中的一些錯(cuò)誤。

補(bǔ)充:

小Alan在評(píng)論中和一些哥們扯了些疑問(wèn),看完文章后,記得看下面的評(píng)論,自己去思考一下,如何去完善我和哥們討論的這些問(wèn)題,技術(shù)永遠(yuǎn)是學(xué)不完的,關(guān)鍵是解決問(wèn)題的思路和方法,這樣不管遇到什么難題或者新技術(shù)都是可以迎難而上的,也是在公司工作的生存之道。

最新改動(dòng)時(shí)間:2016年7月23日

?

?

可愛(ài)博主:AlanLee

?

博客地址:http://www.cnblogs.com/AlanLee

?

本文出自博客園,歡迎大家加入博客園。

?

轉(zhuǎn)載于:https://www.cnblogs.com/AlanLee/p/5656640.html

總結(jié)

以上是生活随笔為你收集整理的java jdbc 连接mysql数据库 实现增删改查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。