博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)使用jdbc连接sql数据库实现增删改查
阅读量:4280 次
发布时间:2019-05-27

本文共 6783 字,大约阅读时间需要 22 分钟。

【转载原因:博主总结很好,后续借鉴】

【转载原文:】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44278630/article/details/88062857

创建动态web项目,根据数据库中表的字段创建bean对象

éè¦æä½çmysql表

public class User {	private int id;	private String name;	private int age;}

写dao层需要实现的功能

package com.sxt.dao;import java.util.List;import com.sxt.pojo.User;public interface IUSerDao {	public List
query(); public int add(User user); public int delete(int id); public int update(User user); public User queryById(int id);}

dao层的实现类实现和数据库的连接以及操作

jdbc连接数据库的基本数据

private String url = "jdbc:mysql://localhost:3306/pms?characterEncoding=utf-8";private String user = "root";private String password = "root";

设置编码方式防止乱码

request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");

1.使用jdbc进行全表查询

  1. 客户端发送请求到服务器
  2. 服务器分配指定的servlet处理请求
  3. servlet获取请求相关的信息
  4. 调用service中的方法处理相关业务请求
  5. service处理数据库相关的业务调用Dao中的方法处理
  6. Dao通过jdbc处理数据库相关的请求
  7. 返回service
  8. 返回servlet
  9. servlet跳转到jsp页面处理数据展示业务
  10. 响应客户需求

dao层query方法代码

    

@Override	public List
query() { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List
list = new ArrayList<>(); try { //1.加载驱动程序 Class.forName("com.mysql.jdbc.Driver"); //2.获得数据库链接 conn = DriverManager.getConnection(url, userName, password); sql = "select * from t_user"; //3.通过数据库的连接操作数据库,实现增删改查 ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ User user = new User(rs.getInt("id"),rs.getString("name"),rs.getInt("age")); list.add(user); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { ps.close(); rs.close(); conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } return list; }

servlet中的代码

// 通过service查询所有用户信息需要的service对象		List
list = userService.query(); // 查询数据保存到request中 request.setAttribute("users", list); // 通过请求转发的方式跳转到user.jsp页面 request.getRequestDispatcher("/user.jsp").forward(request, response);

jsp页面显示

用户管理:

${user.id } -- ${user.name } -- ${user.age }
删除数据
更新数据

添加用户

因为只有一个servlet,要处理不同的业务请求,因此需要一个task分辨功能请求

2.使用jdbc进行增加数据

  1. 跳转到添加用户的界面
  2. 通过表单收集用户需要添加的数据
  3. 提交表单数据到servlet
  4. servlet调用service中添加数据的方法
  5. service将需要添加的数据传递给dao
  6. dao通过jdbc将数据保存到数据库中
  7. 返回service
  8. 返回servlet
  9. 给客户端一个添加成功的提示

dao层的add方法

      

public int add(User user) {		Connection conn = null;		PreparedStatement ps = null;		try {			//1.加载驱动程序			Class.forName("com.mysql.jdbc.Driver");			//2.获得数据库链接			conn = DriverManager.getConnection(url, userName, password);			sql = "insert into t_user(name,age)values(?,?) ";			//3.通过数据库的连接操作数据库,实现增删改查			ps = conn.prepareStatement(sql);			ps.setString(1, user.getName());			ps.setInt(2, user.getAge());						return ps.executeUpdate();		} catch (Exception e) {			e.printStackTrace();		}finally{			try {				ps.close();				conn.close();			} catch (Exception e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}		return 0;	}

servlet层的业务逻辑

// 获取请求类型的参数		String task = request.getParameter("task");		if ("add".equals(task)) {			// 表示添加用户信			String name = request.getParameter("name");			String age = request.getParameter("age");			User user = new User();			user.setAge(Integer.parseInt(age));			user.setName(name);			// 调用service的方法添加数据			userService.add(user);			// 让用户重新查询一次			response.sendRedirect(request.getContextPath() + "/userServlet");		}

add.jsp页面

添加用户信息

姓名:
年龄:

3.通过jdbc实现删除数据

  • 将需要删除的id传递给servlet,servlet将id传递给service,service将id传递给dao,dao通过jdbc将id为该记录的数据删除

dao层delete代码

public int delete(int id) {		Connection conn = null;		PreparedStatement ps = null;				try {			//1.加载驱动程序			Class.forName("com.mysql.jdbc.Driver");			//2.获得数据库链接			conn = DriverManager.getConnection(url, userName, password);			sql = "delete from t_user where id = ?";			//3.通过数据库的连接操作数据库,实现增删改查			ps = conn.prepareStatement(sql);			ps.setInt(1, id);						return ps.executeUpdate();		} catch (Exception e) {			e.printStackTrace();		}finally{			try {				ps.close();				conn.close();			} catch (Exception e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}		return 0;	}

servlet代码

else if ("delete".equals(task)) {			// 表示根据id删除数据			String id = request.getParameter("id");			userService.delete(Integer.parseInt(id));			// 让用户重新查询一次			response.sendRedirect(request.getContextPath() + "/userServlet");		}

4.使用jdbc更新数据

1.更新

1.1 根据修改需要修改记录的id,查到该条记录的详细信息
1.2 跳转到修改界面
1.3 将要修改的信息填充到表单中

2.用户修改数据

2.1 将表单数据提交到servlet
2.2 servlet --> service
2.3 service --> dao
2.4 dao通过jdbc更新数据
2.5 返回service
2.6 返回servlet
2.7 通知客户端重新查询

dao层代码

public User queryById(int id) {		Connection conn = null;		PreparedStatement ps = null;		ResultSet rs = null;				try {			//1.加载驱动程序			Class.forName("com.mysql.jdbc.Driver");			//2.获得数据库链接			conn = DriverManager.getConnection(url, userName, password);			sql = "select * from t_user where id = ?";			//3.通过数据库的连接操作数据库,实现增删改查			ps = conn.prepareStatement(sql);			ps.setInt(1, id);			rs = ps.executeQuery();			if(rs.next()){				return new User(rs.getInt("id"),rs.getString("name"),rs.getInt("age"));			}					} catch (Exception e) {			e.printStackTrace();		}finally{			try {				ps.close();				conn.close();			} catch (Exception e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}		return null;	}
public int update(User user) {		Connection conn = null;		PreparedStatement ps = null;				try {			//1.加载驱动程序			Class.forName("com.mysql.jdbc.Driver");			//2.获得数据库链接			conn = DriverManager.getConnection(url, userName, password);			sql = "update t_user set name = ?, age = ? where id = ?";			//3.通过数据库的连接操作数据库,实现增删改查			ps = conn.prepareStatement(sql);			ps.setString(1, user.getName());			ps.setInt(2, user.getAge());			ps.setInt(3, user.getId());						return ps.executeUpdate();		} catch (Exception e) {			e.printStackTrace();		}finally{			try {				ps.close();				conn.close();			} catch (Exception e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}		return 0;	}

servlet代码

else if ("queryById".equals(task)) {			// 根据id查询用户信息			String id = request.getParameter("id");			User user = userService.queryById(Integer.parseInt(id));			// 将user对象信息绑定到request对象中			request.setAttribute("user", user);			// 跳转到更新页面			request.getRequestDispatcher("/update.jsp").forward(request, response);		} else if ("update".equals(task)) {			// 更新用户数据			String id = request.getParameter("id");			String name = request.getParameter("name");			String age = request.getParameter("age");			User user = new User(Integer.parseInt(id), name, Integer.parseInt(age));			userService.update(user);			// 让用户重新查询一次			response.sendRedirect(request.getContextPath() + "/userServlet");		}

update.jsp页面

更新用户信息

姓名:
年龄:

 

你可能感兴趣的文章
在vim中判斷檔案格式,是dos或者unix
查看>>
nmap
查看>>
nmap 與 brutespray合作破解
查看>>
如何設定static route
查看>>
gethostbyname与DNS
查看>>
strace
查看>>
debug tools
查看>>
killall doesn't kill all and rarely kills, what is the command for then?
查看>>
ip数据包经由路由转发的时候源ip MAC,目的ip 目的MAC是否改变
查看>>
How to determine the filesystem of an unmounted device?
查看>>
NAT 相關
查看>>
What is kernel ip forwarding?
查看>>
hping
查看>>
git commit 出錯 處理
查看>>
每日英文2013.06.15
查看>>
Linux多线程,线程的分离与结合
查看>>
net use命令详解
查看>>
如何制作patch文件?
查看>>
玩玩DDNS
查看>>
svn使用笔记
查看>>