JavaWed项目之修改操作

				JavaWed项目之修改操作

修改操作基本思想还是不变的,第一,就是回填数据。第二,将锁修改好的数据信息进行保存。
首先,完成第一步。

 <tr>
<td>${user.id}</td> <%--属性名称必须跟User.java一样,还有小写 --%>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.email}</td>
<td>${user.role}</td>
<td>${user.status}</td>
edit 通过表格中的a标签,进行查询。
 private void getUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String name = request.getParameter("id");
	int id = 0;
	UserDao ud = new UserDaoImpl();
	User user = null;
	if(name != null) {
		id = Integer.parseInt(name);
		user = ud.findOne(id);
		request.setAttribute("user", user); 
request.getRequestDispatcher("update.jsp").forward(request, response);
	}
	else {
		response.getWriter().write("getUser err");
	}
}

将所查询到的数据进行回填。回填到jsp页面后,又将已修改好的数据进行保存

 <form action="UserListServlet?mthname=edit" method="POST">
id<input type = "text" name = "id" value="${user.id }" readonly    = "readonly"><br>
 username<input type="text" value="${user.username }" name="username"><br>
   password<input  type="text" value="${user.password }" name="password"><br>
     email<input type ="text"  value="${user.email }" name="email"><br>
      role<input type="text" value="${user.role }" name="role"><br>
       status<input type="text" value="${user.status }" name="status"><br>
        <input type="submit" value="提交">

上面jsp页面的代码将修改的数据进行传递到Servlet层。

private void edit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String username=request.getParameter("username");
	String password=request.getParameter("password");
	String email =request.getParameter("email");
	String role=request.getParameter("role");
	String status=request.getParameter("status");
	String strid=request.getParameter("id");
	UserDao ud =new UserDaoImpl();
	if(username != null && password != null) {
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		user.setEmail(email);
		user.setRole(Integer.parseInt(role));
		user.setStatus(Integer.parseInt(status));
		user.setId(Integer.parseInt(strid));
		ud.update(user);
request.getRequestDispatcher("UserListServlet?mthname=list").forward(request, response);
	}
	else {
		response.getWriter().write("edit err");
	}
}

上面代码主要是获取到所将要修改的数据与返回数据。而进行修改操作的代码主要是ud.update(user);

 public void update(User user) {
 Connection conn = DbUtils.getConnection();
String sql = "update users set      username=?,password=?,email=?,role=?,status=?  where id=?;";
  PreparedStatement st = null;
	try {
		st = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
		st.setString(1, user.getUsername());
		st.setString(2, user.getPassword());
		st.setString(3, user.getEmail());
		st.setInt(4, user.getRole());
		st.setInt(5, user.getStatus());
		st.setInt(6, user.getId());
		int num = st.executeUpdate();
		if (num > 0 ) {
			System.out.println("更新成功 id是:" + user.getId());
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}finally {
		DbUtils.close(conn, st, null);
	}
}

其实整个修改的核心就是上面的方法,
Connection conn = DbUtils.getConnection();
这行代码主要是连接数据库的操作。
String sql = “update users set username=?,password=?,email=?,role=?,status=? where id=?;”;
//执行语句
这里的参数后面的问号对应的是:

    st.setString(1, user.getUsername());
		st.setString(2, user.getPassword());
		st.setString(3, user.getEmail());
		st.setInt(4, user.getRole());
		st.setInt(5, user.getStatus());
		st.setInt(6, user.getId());

1、2、3表示对应参数后面的问号
PreparedStatement st = null;
这里使用的是 PreparedStatement 接口,PreparedStatement也是用来执行sql语句的与创建Statement不同的是,需要根据sql语句 创建PreparedStatement。除此之外,还能够通过设置参数,指定相应的值,而不是 Statement那样使用字符串拼接。
executeUpdate();
executeUpdate不能执行查询语,executeUpdate的返回值是int,表示有多少条数据 受到了影响。
然后返回结果,关闭连接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值