JDBC实现增删改查功能

广告也精彩

一、数据库结构

1、在本地 localhost,用户名 root ,密码为空,新建数据库 jdbc_study,新建数据表 users 表

users 表结构如下

JDBC实现增删改查功能

有七个字段,分别是 id,name,password,birthday,email,create_date,status

 

二、代码实现

总共有4个类,分别是 DBUtil.java,Users.java,UsersDAO.java,UsersAction.java

采用 MVC 思想,虽然这里没有 View,测试可以在 UsersAction.java

为了方便管理分别建了四个包(package),具体可以看代码头部

DBUtil.java

  1. package com.liuyanzhao.db;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. /*
  6.  * @author LiuYanzhao
  7.  */
  8. public class DBUtil {
  9.     private static final String URL = "jdbc:mysql://127.0.0.1:3306/jdbc_study"
  10.             + "?useUnicode=true&characterEncoding=utf8";//防止中文读取乱码
  11.     private static final String USER = "root";
  12.     private static final String PASSWORD = "";
  13.     public static Connection conn = null;
  14.     //静态代码块最先执行,先执行一次
  15.     static {
  16.         try {
  17.             //加载驱动
  18.             Class.forName("com.mysql.jdbc.Driver");
  19.             //获取连接
  20.             conn = DriverManager.getConnection(URL, USER, PASSWORD);
  21.         } catch (ClassNotFoundException e) {
  22.             e.printStackTrace();
  23.         } catch (SQLException e) {
  24.             e.printStackTrace();
  25.         }
  26.     }
  27.     //单例模式,使对象唯一性
  28.     public static Connection getConnection() {
  29.         return conn;
  30.     }
  31.     public static void main(String[] args) {
  32.     }
  33. }

Users.java

  1. package com.liuyanzhao.model;
  2. import java.sql.Date;
  3. /*
  4.  * @author LiuYanzhao
  5.  */
  6. public class Users {
  7.     private int id;
  8.     private String name;
  9.     private String password;
  10.     private Date birthday;
  11.     private String Email;
  12.     private Date create_date;
  13.     private int status;
  14.     public int getId() {
  15.         return id;
  16.     }
  17.     public void setId(int id) {
  18.         this.id = id;
  19.     }
  20.     public String getName() {
  21.         return name;
  22.     }
  23.     public void setName(String name) {
  24.         this.name = name;
  25.     }
  26.     public String getPassword() {
  27.         return password;
  28.     }
  29.     public void setPassword(String password) {
  30.         this.password = password;
  31.     }
  32.     public Date getBirthday() {
  33.         return birthday;
  34.     }
  35.     public void setBirthday(Date birthday) {
  36.         this.birthday = birthday;
  37.     }
  38.     public String getEmail() {
  39.         return Email;
  40.     }
  41.     public void setEmail(String email) {
  42.         Email = email;
  43.     }
  44.     public Date getCreate_date() {
  45.         return create_date;
  46.     }
  47.     public void setCreate_date(Date create_date) {
  48.         this.create_date = create_date;
  49.     }
  50.     public int getStatus() {
  51.         return status;
  52.     }
  53.     public void setStatus(int status) {
  54.         this.status = status;
  55.     }
  56. }

UsersDAO.java

  1. package com.liuyanzhao.dao;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.text.ParseException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import com.liuyanzhao.db.DBUtil;
  10. import com.liuyanzhao.model.Users;
  11. /*
  12.  * @author LiuYanzhao
  13.  */
  14. public class UsersDAO {
  15.     //添加用户
  16.     public void addUsers(Users u) throws SQLException, ParseException {
  17.         Connection conn = DBUtil.getConnection();
  18.         String sql = " insert into users "
  19.                    + "(name,password,birthday,email,create_date,status)"
  20.                    + " value("
  21.                    + "?,?,?,?,current_date(),1"
  22.                    + ") ";
  23.         PreparedStatement ptmt = conn.prepareStatement(sql);
  24.         ptmt.setString(1, u.getName());
  25.         ptmt.setString(2, u.getPassword());
  26.         ptmt.setDate(3, u.getBirthday());
  27.         ptmt.setString(4, u.getEmail());
  28.         ptmt.executeUpdate();
  29.     }
  30.     //删除用户
  31.     public void deleUser(int id) throws SQLException {
  32.         Connection conn = DBUtil.getConnection();
  33.         String sql = " delete from users where id=?";
  34.         PreparedStatement ptmt = conn.prepareStatement(sql);
  35.         ptmt.setInt(1, id);
  36.         ptmt.executeUpdate();
  37.     }
  38.     //修改用户
  39.     public void updateUser(Users u) throws SQLException {
  40.         Connection conn = DBUtil.getConnection();
  41.         String sql = " update users set "
  42.                    + " name=?,password=?,birthday=?,email=?,"
  43.                    + " status=?"
  44.                    + " where id=?";
  45.         PreparedStatement ptmt = conn.prepareStatement(sql);
  46.         ptmt.setString(1, u.getName());
  47.         ptmt.setString(2, u.getPassword());
  48.         ptmt.setDate(3, u.getBirthday());
  49.         ptmt.setString(4, u.getEmail());
  50.         ptmt.setInt(5, u.getStatus());
  51.         ptmt.setInt(6, u.getId());
  52.         ptmt.executeUpdate();
  53.     }
  54.     //根据id查询单个用户
  55.     public Users get(int id) throws SQLException {
  56.         Connection conn = DBUtil.getConnection();
  57.         String sql = " select * from users where id=?";
  58.         PreparedStatement ptmt = conn.prepareStatement(sql);
  59.         ptmt.setInt(1, id);
  60.         ResultSet rs = ptmt.executeQuery();
  61.         Users u = null;
  62.         while(rs.next()) {
  63.             u = new Users();
  64.             u.setId(rs.getInt("id"));
  65.             u.setName(rs.getString("name"));
  66.             u.setPassword(rs.getString("password"));
  67.             u.setBirthday(rs.getDate("birthday"));
  68.             u.setEmail(rs.getString("email"));
  69.             u.setCreate_date(rs.getDate("create_date"));
  70.             u.setStatus(rs.getInt("status"));
  71.         }
  72.         return u;
  73.     }
  74.     //遍历用户信息
  75.     public List<Users> query() throws SQLException {
  76.         List<Users> result = new ArrayList<Users>();
  77.         Connection conn = DBUtil.getConnection();
  78.         String sql = " select * from users";
  79.         PreparedStatement ptmt = conn.prepareStatement(sql);
  80.         ResultSet rs = ptmt.executeQuery();
  81.         Users u = null;
  82.         while(rs.next()) {
  83.             u = new Users();
  84.             u.setId(rs.getInt("id"));
  85.             u.setName(rs.getString("name"));
  86.             u.setPassword(rs.getString("password"));
  87.             u.setBirthday(rs.getDate("birthday"));
  88.             u.setEmail(rs.getString("email"));
  89.             u.setCreate_date(rs.getDate("create_date"));
  90.             u.setStatus(rs.getInt("status"));
  91.             result.add(u);
  92.         }
  93.         return result;
  94.     }
  95. }

UsersAction.java

  1. package com.liuyanzhao.action;
  2. import java.sql.Date;
  3. import java.sql.SQLException;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.List;
  7. import com.liuyanzhao.dao.UsersDAO;
  8. import com.liuyanzhao.model.Users;
  9. /*
  10.  * @author LiuYanzhao
  11.  */
  12. public class UsersAction {
  13.     //添加用户
  14.     public void add(Users u) throws SQLException, ParseException {
  15.         UsersDAO dao = new UsersDAO();
  16.         dao.addUsers(u);
  17.     }
  18.     //删除用户
  19.     public void dele(int id) throws SQLException {
  20.         UsersDAO dao = new UsersDAO();
  21.         dao.deleUser(id);
  22.     }
  23.     //修改用户
  24.     public void edit(Users u) throws SQLException {
  25.         UsersDAO dao = new UsersDAO();
  26.         dao.updateUser(u);
  27.     }
  28.     //根据id查询单条用户
  29.     public Users get(int id) throws SQLException {
  30.         UsersDAO dao = new UsersDAO();
  31.         return dao.get(id);
  32.     }
  33.     //遍历查询所有用户
  34.     public List<Users> query() throws SQLException {
  35.         UsersDAO dao = new UsersDAO();
  36.         return dao.query();
  37.     }
  38.     public static void main(String[] args) throws ParseException, SQLException {
  39.         //添加用户测试
  40.         /*Users u = new Users();
  41.         u.setName("小田");
  42.         u.setPassword("123456");
  43.         u.setBirthday(new Date((new SimpleDateFormat("yyyy-MM-dd").parse("2006-8-10")).getTime()));
  44.         u.setEmail("xiaotian@126.com");
  45.         UsersAction action = new UsersAction();
  46.         action.add(u);*/
  47.         //删除用户测试
  48.         /*UsersAction action2 = new UsersAction();
  49.         action2.dele(5);*/
  50.         //更新用户测试
  51.         /*Users u3 = new Users();
  52.         u3.setId(7);
  53.         u3.setName("小雅");
  54.         u3.setPassword("aaaaaa");
  55.         u3.setBirthday(new Date((new SimpleDateFormat("yyyy-MM-dd").parse("2014-7-21")).getTime()));
  56.         u3.setEmail("xiaoya@126.com");
  57.         u3.setStatus(1);
  58.         UsersAction action3 = new UsersAction();
  59.         action3.edit(u3); */
  60.         //查询用户测试,单条数据
  61.         /*UsersAction action4 = new UsersAction();
  62.         Users u4 = action4.get(7);
  63.         System.out.println(u4.getId());
  64.         System.out.println(u4.getName());
  65.         System.out.println(u4.getPassword());
  66.         System.out.println(u4.getBirthday());
  67.         System.out.println(u4.getEmail());
  68.         System.out.println(u4.getCreate_date());
  69.         System.out.println(u4.getStatus());*/
  70.         //查询所有用户信息,遍历
  71.         UsersAction action5 = new UsersAction();
  72.         List<Users> list = action5.query();
  73.         for(int i=0;i<list.size();i++) {
  74.             System.out.print(list.get(i).getId()+" ");
  75.             System.out.print(list.get(i).getName()+" ");
  76.             System.out.print(list.get(i).getPassword()+" ");
  77.             System.out.print(list.get(i).getBirthday()+" ");
  78.             System.out.print(list.get(i).getEmail()+" ");
  79.             System.out.print(list.get(i).getCreate_date()+" ");
  80.             System.out.print(list.get(i).getStatus()+" ");
  81.             System.out.println();
  82.         }
  83.     }
  84. }

三、知识拓展

1、JDBC常用API和使用

2、MySQL常用语句

3、execute、executeUpdate、executeQuery三者的区别

4、Java中PreparedStatement和Statement区别

5、java中ArrayList实例讲解

6、Java中如何使某个类的对象唯一性,只能创建一个对象

 

本文链接:https://liuyanzhao.com/5323.html

转载请务必注明

  • 微信
  • 赶快加我聊天吧
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
言曌
广告也精彩

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: