jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate、Mybatis。
但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查的。
回归正题,先来看看我们的开发环境:
Java语言、Eclipse开发工具、Mysql数据库、Navicat数据库可视化工具。
开发环境的安装搭建及使用请自己查阅资料(很简单的),这里不详细阐述。
第一步,创建数据库,利用Navicat数据库可视化工具随便建立一个数据库,在库中建立一张表,表里给几个字段(记得给个id字段,唯一主键,自增序列),再随便给上两条数据便好,用来测试功能,如图:
第二步,打通数据库(这个例子希望大家自己动手敲敲,耽误不了多少时间,熟悉一下jdbc如何和数据库打交道,故以图示之),如图:
第三步,改造DBUtil类,方便在dao层获得数据库的连接,代码如下:
package com.czgo.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc"; private static final String UNAME = "root"; private static final String PWD = "root"; private static Connection conn = null; static { try { // 1.加载驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 2.获得数据库的连接 conn = DriverManager.getConnection(URL, UNAME, PWD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getConnection() { return conn; } }
第四步,创建实体类(如上图,大家观察包的分配,我们将采用MVC思想设计本实例,有关于mvc的设计思想,请大家自行学习,这里不多说)代码如下:
package com.czgo.model; import java.io.Serializable; /** * 实体类:女神类 * * @author AlanLee * */ public class Goddess implements Serializable { private static final long serialVersionUID = 1L; /** * 唯一主键 */ private Integer id; /** * 姓名 */ private String name; /** * 手机号码 */ private String mobie; /** * 电子邮件 */ private String email; /** * 家庭住址 */ private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMobie() { return mobie; } public void setMobie(String mobie) { this.mobie = mobie; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
第五步,dao层的实现(这里由于是小例子没有写dao接口,实际工作中大型项目应该是要写dao接口的,便于程序的维护和扩展),代码如下:
package com.czgo.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.czgo.db.DBUtil; import com.czgo.model.Goddess; /** * 数据层处理类 * * @author AlanLee * */ public class GoddessDao { /** * 查询全部女神 * * @return * @throws SQLException */ public List<Goddess> query() throws SQLException { List<Goddess> goddessList = new ArrayList<Goddess>(); // 获得数据库连接 Connection conn = DBUtil.getConnection(); StringBuilder sb = new StringBuilder(); sb.append("select id,name,mobie,email,address from goddess"); // 通过数据库的连接操作数据库,实现增删改查 PreparedStatement ptmt = conn.prepareStatement(sb.toString()); ResultSet rs = ptmt.executeQuery(); Goddess goddess = null; while (rs.next()) { goddess = new Goddess(); goddess.setId(rs.getInt("id")); goddess.setName(rs.getString("name")); goddess.setMobie(rs.getString("mobie")); goddess.setEmail(rs.getString("email")); goddess.setAddress(rs.getString("address")); goddessList.add(goddess); } return goddessList; } /** * 查询单个女神 * * @return * @throws SQLException */ public Goddess queryById(Integer id) throws SQLException { Goddess g = null; Connection conn = DBUtil.getConnection(); String sql = "" + " select * from imooc_goddess " + " where id=? "; PreparedStatement ptmt = conn.prepareStatement(sql); ptmt.setInt(1, id); ResultSet rs = ptmt.executeQuery(); while (rs.next()) { g = new Goddess(); g.setId(rs.getInt("id")); g.setName(rs.getString("name")); g.setMobie(rs.getString("mobie")); g.setEmail(rs.getString("email")); g.setAddress(rs.getString("address")); } return g; } /** * 添加女神 * * @throws SQLException */ public void addGoddess(Goddess goddess) throws SQLException { // 获得数据库连接 Connection conn = DBUtil.getConnection(); String sql = "insert into goddess(name,mobie,email,address) values(?,?,?,?)"; PreparedStatement ptmt = conn.prepareStatement(sql); ptmt.setString(1, goddess.getName()); ptmt.setString(2, goddess.getMobie()); ptmt.setString(3, goddess.getEmail()); ptmt.setString(4, goddess.getAddress()); ptmt.execute(); } /** * 修改女神资料 * * @throws SQLException */ public void updateGoddess(Goddess goddess) throws SQLException { Connection conn = DBUtil.getConnection(); String sql = "update goddess set name=?,mobie=?,email=?,address=? where id=?"; PreparedStatement ptmt = conn.prepareStatement(sql); ptmt.setString(1, goddess.getName()); ptmt.setString(2, goddess.getMobie()); ptmt.setString(3, goddess.getEmail()); ptmt.setString(4, goddess.getAddress()); ptmt.execute(); } /** * 删除女神 * * @throws SQLException */ public void deleteGoddess(Integer id) throws SQLException { Connection conn = DBUtil.getConnection(); String sql = "delete from goddess where id=?"; PreparedStatement ptmt = conn.prepareStatement(sql); ptmt.setInt(1, id); ptmt.execute(); } }
第六步,控制层的实现(控制层在此处用来模仿控制层和界面,直接在这里构建数据,如果是界面的数据则通过请求传递接收参数即可,控制层的代码大家可以根据实际情况去更改完善,这里只是给大家抛砖引玉,做个简单的测试,时间比较紧,希望大家理解),代码如下:
package com.czgo.action; import java.sql.SQLException; import java.util.List; import com.czgo.dao.GoddessDao; import com.czgo.model.Goddess; /** * 控制层,直接在这里构建数据,界面的数据则通过请求传递接收即可,亦是同理 * * @author AlanLee * */ public class GoddessAction { /** * 新增女神 * * @param goddess * @throws Exception */ public void add(Goddess goddess) throws Exception { GoddessDao dao = new GoddessDao(); goddess.setName("苍井空"); goddess.setMobie("52220000"); goddess.setEmail("52220000@qq.com"); goddess.setAddress("北京红灯区"); dao.addGoddess(goddess); } /** * 查询单个女神 * * @param id * @return * @throws SQLException */ public Goddess get(Integer id) throws SQLException { GoddessDao dao = new GoddessDao(); return dao.queryById(id); } /** * 修改女神 * * @param goddess * @throws Exception */ public void edit(Goddess goddess) throws Exception { GoddessDao dao = new GoddessDao(); dao.updateGoddess(goddess); } /** * 删除女神 * * @param id * @throws SQLException */ public void del(Integer id) throws SQLException { GoddessDao dao = new GoddessDao(); dao.deleteGoddess(id); } /** * 查询全部女神 * * @return * @throws Exception */ public List<Goddess> query() throws Exception { GoddessDao dao = new GoddessDao(); return dao.query(); } /** * 测试是否成功 * * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { GoddessDao goddessDao = new GoddessDao(); List<Goddess> goddessList = goddessDao.query(); for (Goddess goddess : goddessList) { System.out.println(goddess.getName() + "," + goddess.getMobie() + "," + goddess.getEmail()); } } }
最后,让我们看一下main方法的运行结果是否成功:
这样,一个简单的java jdbc 连接mysql数据库 实现增删改查便完成了,大家可以在查询的基础上试着去做一个高级查询,也就是多条件查询来巩固jdbc的使用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Python实现连接MySql数据库及增删改查操作详解,包括了Python实现连接MySql数据库及增删改查操作详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现连接MySql数据库及增删改查操作。分享给大家供大家参考,具体如下: 在本文中介绍 Python3 使用PyMySQL连接数据库,并实现简单的增删改查。(注意是python3) 1、安装PyMySQ
本文向大家介绍Node.js操作mysql数据库增删改查,包括了Node.js操作mysql数据库增删改查的使用技巧和注意事项,需要的朋友参考一下 关于node.js操作mysql数据库的相关介绍请阅读全文吧。下文介绍的非常详细,具体内容如下所示: 安装mysql模块 数据库准备 mysql server所在的机器IP地址是192.168.0.108,登录账户就用root@123456 在mys
本文向大家介绍PHP连接数据库实现注册页面的增删改查操作,包括了PHP连接数据库实现注册页面的增删改查操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了PHP连接数据库实现注册页面的增删改查操作的方法,供大家参考,具体内容如下 1.连接数据库 2.注册页面(html页面) 3.将注册数据显示在数据库 4.返回后台界面 5.修改数据 6.删除数据 以上就是本文的全部内容,希望对大家的
本文向大家介绍PHP连接MySQL进行增、删、改、查操作,包括了PHP连接MySQL进行增、删、改、查操作的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: fetch_all() 返回全部数组 fetch_row() 返回索引数组 fetch_assoc() 返回关联数组 fetch_object() 返回
本文向大家介绍php实现数据库的增删改查,包括了php实现数据库的增删改查的使用技巧和注意事项,需要的朋友参考一下 1.查询: 数据的显示,这里就可以嵌入php来进行数据的输出 2.删除的处理页面 删除时是链接到删除处理页面的,所以还要写一个删除处理页面: 来张效果图: 3.添加数据: 点击即可进入添加页面 添加页面: 添加也需要一个处理页面来判断添加: 效果图: 4.修改数据:主键不可修改!!
本文向大家介绍java连接Mongodb实现增删改查,包括了java连接Mongodb实现增删改查的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java连接Mongodb实现增删改查的具体代码,供大家参考,具体内容如下 1.创建maven项目 2.编写代码 1.查询所有 2.添加数据 3.删除 4.修改 5.条件查询 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多