好久没有写博文了,写个简单的东西热热身,分享给大家。

jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate、Mybatis。

但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查的。

回归正题,先来看看我们的开发环境:

Java语言、Eclipse开发工具、Mysql数据库、Navicat数据库可视化工具。

开发环境的安装搭建及使用请自己查阅资料(很简单的),这里不详细阐述。

第一步,创建数据库,利用Navicat数据库可视化工具随便建立一个数据库,在库中建立一张表,表里给几个字段(记得给个id字段,唯一主键,自增序列),再随便给上两条数据便好,用来测试功能,如图:

第二步,打通数据库(这个例子希望大家自己动手敲敲,耽误不了多少时间,熟悉一下jdbc如何和数据库打交道,故以图示之),如图:

第三步,改造DBUtil类,方便在dao层获得数据库的连接,代码如下:

 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.加载驱动程序 20 Class.forName("com.mysql.jdbc.Driver"); 21 // 2.获得数据库的连接 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 }

第四步,创建实体类(如上图,大家观察包的分配,我们将采用MVC思想设计本实例,有关于mvc的设计思想,请大家自行学习,这里不多说)代码如下:

 1 package com.czgo.model;2 3 import java.io.Serializable;4 5 /**6  * 实体类:女神类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 * 手机号码 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层的实现(这里由于是小例子没有写dao接口,实际工作中大型项目应该是要写dao接口的,便于程序的维护和扩展),代码如下:

  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  * 数据层处理类
 15  *
 16  * @author AlanLee
 17  *
 18  */
 19 public class GoddessDao
 20 {
 21     /**
 22      * 查询全部女神
 23      *
 24      * @return
 25      * @throws SQLException
 26      */
 27     public List<Goddess> query()
 28     {
 29         List<Goddess> goddessList = new ArrayList<Goddess>();
 30
 31         // 获得数据库连接
 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             // 通过数据库的连接操作数据库,实现增删改查
 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      * 查询单个女神
 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         // 获得数据库连接
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 }

第六步,控制层的实现(控制层在此处用来模仿控制层和界面,直接在这里构建数据,如果是界面的数据则通过请求传递接收参数即可,控制层的代码大家可以根据实际情况去更改完善,这里只是给大家抛砖引玉,做个简单的测试,时间比较紧,希望大家理解),代码如下:

 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  * 控制层,直接在这里构建数据,界面的数据则通过请求传递接收即可,亦是同理
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("北京红灯区"); 30  dao.addGoddess(goddess); 31  } 32 33 /** 34 * 查询单个女神 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 * 查询全部女神 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 * 测试是否成功 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方法的运行结果是否成功:

这样,一个简单的java jdbc 连接mysql数据库 实现增删改查便完成了,大家可以在查询的基础上试着去做一个高级查询,也就是多条件查询来巩固jdbc的使用。时间比较紧,所以没有给大家一一测试增删改查的功能,闲着没事做蛋疼的可以都去测试一下,如果发现问题,希望能够指正小Alan,小Alan有空的时候便去修正博文中的一些错误。

补充:

小Alan在评论中和一些哥们扯了些疑问,看完文章后,记得看下面的评论,自己去思考一下,如何去完善我和哥们讨论的这些问题,技术永远是学不完的,关键是解决问题的思路和方法,这样不管遇到什么难题或者新技术都是可以迎难而上的,也是在公司工作的生存之道。

最新改动时间:2016年7月23日

可爱博主:AlanLee

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

本文出自博客园,欢迎大家加入博客园。

转载于:https://www.cnblogs.com/AlanLee/p/5656640.html

java jdbc 连接mysql数据库 实现增删改查相关推荐

  1. DAO模式设计-JDBC连接Mysql数据库实现增删改查及JunitTest单元测试

     概念介绍 JDBC JDBC(Java数据库连接,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC ...

  2. jdbc mysql增删改查_使用JDBC连接MySQL数据库操作增删改查

    更多精彩内容欢迎访问我的个人博客皮皮家园:http://www.zhsh666.xyz或者http

  3. C#语言连接Mysql数据库实现增删改查

    C#语言连接Mysql数据库实现增删改查 实现效果如图 在此之前先下载一个mysql.dll 库 如下 链接:https://pan.baidu.com/s/17Nv_1W3KbXfWgdOvWf_S ...

  4. jdbc如何对mysql数据库进行查询_【转载】通过JDBC对MySQL数据库的增删改查

    目录 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接 ...

  5. c 连接mysql怎么增删改_C++ API方式连接mysql数据库实现增删改查

    这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...

  6. Python项目:学生管理系统连接MySQL数据库(增删改查、排序、统计、显示所有信息)

    文章目录 一程序功能(Function) 1. 功能概述 2. 思维导图 二.开始实践 战前准备 定义学生管理系统菜单 定义主函数 1.录入学生信息 2.查找学生信息 3.删除学生信息 4.修改学生信 ...

  7. C#通过VS连接MySQL数据库实现增删改查基本操作

    创建一个数据库wsq 里面有一张beyondyanyu表 表里面有id(int).names(varchar).count(int).passwords(varchar) 数据可以自己添 1.导入My ...

  8. Python实现连接Mysql数据库实现增删改查

    1.查看已安装的Python驱动 在windows的dos窗口中输入pip list查询已安装的Python驱动. 2.如未安装,进行下载Python的PyMySQL驱动 在windows的dos窗口 ...

  9. 【JDBC】连接MySQL数据库实现增删改查

    文章目录 一.JDBC编写步骤 二.数据库连接--Connection 2.1 连接要素 2.1.1 Driver接口实现类 2.1.2 URL 2.1.3 用户名和密码 2.2 建立连接 2.2.1 ...

最新文章

  1. Vue - 表单
  2. MySql - 索引
  3. 弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介
  4. 网页服务器和mysql服务器_实现Web服务器之间使用同一个MYSQL和相同的网页配置文件的方法...
  5. 安卓dalvik和art区别
  6. Print() 语句以及数字赋值语句 中if-else的使用
  7. 好纠结啊,JeeWx商业版本和开源版本有什么区别呢?
  8. Deep Learning for Brain MRI Segmentation: State of the Art and Future Directions
  9. Python GIL 系列之再谈Python的GIL
  10. oracle 比较日期相等
  11. AI智能电话机器人源码搭建的原理与功能
  12. 【Hinton论文翻译与理解】How to represent part-whole hierarchies in a neural network_202102
  13. 大作家超级写作软件_大作家都是极度自律的人,你也可以
  14. PHP QQ网页三方登录
  15. 用bootstrap写一个简洁的网页
  16. 契约锁电子签助力拍卖业务网上签约,保全证据、不可抵赖,成交快
  17. 官方微信支付跟特约商户的区别
  18. alpine linux apk删除,把玩Alpine linux(二):APK包管理器
  19. ios开发 静音键设置_IOS 静音开关检测
  20. 红蓝攻防中蓝队职责(防守方)

热门文章

  1. golang:Linux下安装go环境
  2. 两栈共享存储空间算法
  3. jquery跨域Ajax请求
  4. MXNet——symbol
  5. 集群IPtables转发与防火墙
  6. linux 搭建testlink的问题总结
  7. wordpress+lnmp出现 404 Not Found nginx
  8. 智慧北京02_初步ui框架_ 主界面_viewPager事件_xUtils_slidingMenu_网络缓存_数据传递...
  9. .net大型分布式电子商务架构说明(转载来自头条)
  10. 终于有人把幸存者偏差讲明白了