JDBC修改数据(部分代码参考查询部分)

使用JDBC修改数据库中的数据使用UPDATE语句实现

修改图书数量SQL语句:update tb_book set bookcount =100 where id =1;

在实际开发中通常都是程序传递SQL语句中的参数,所以修改数据也需要使用Preparedestatement对象执行操作。

在查询所有图书信息的页面中添加修改图书数量的表单,通过servlet修改数据库中图书数量

1)在book_list.jsp中添加修改图书数量的表单,表单提交地址设置为updateservlet其关键代码如下:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.util.List"%>
<%@page import="com.xhd.bean.Book"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>所有图书信息</title>
<style type="text/css">
	form{margin: 0px;}
	td{font-size: 12px;}
	h2{margin: 2px}
</style>
<script type="text/javascript">
	function check(form){
		with(form){
			if(bookCount.value == ""){
				alert("请输入更新数量!");
				return false;
			}
			if(isNaN(bookCount.value)){
				alert("格式错误!");
				return false;
			}
			return true;;
		}
	}
</script>
</head>
<body>
	<table align="center" width="500" border="1" height="170" bordercolor="white" bgcolor="black" cellpadding="1" cellspacing="1">
		<tr bgcolor="white">
			<td align="center" colspan="6">
				<h2>所有图书信息</h2>
			</td>
		</tr>
		<tr align="center" bgcolor="#e1ffc1" >
			<td><b>ID</b></td>
			<td><b>图书名称</b></td>
			<td><b>价格</b></td>
			<td><b>数量</b></td>
			<td><b>作者</b></td>
			<td><b>修改数量</b></td>
		</tr>
			<%
				// 获取图书信息集合
					List<Book> list = (List<Book>)request.getAttribute("list");
					// 判断集合是否有效
					if(list == null || list.size() < 1){
						out.print("没有数据!");
					}else{
						// 遍历图书集合中的数据
						for(Book book : list){
			%>
				<tr align="center" bgcolor="white">
					<td><%=book.getId()%></td>
					<td><%=book.getName()%></td>
					<td><%=book.getPrice()%></td>
					<td><%=book.getBookCount()%></td>
					<td><%=book.getAuthor()%></td>
					<td>
						<form action="UpdateServlet" method="post" οnsubmit="return check(this);">
							<input type="hidden" name="id" value="<%=book.getId()%>">
							<input type="text" name="bookCount" size="3">
							<input type="submit" value="修 改">
						</form>
					</td>
				</tr>
			<%

					}
				}
			%>
	</table>
</body>
</html>
在修改图书信息表单中主要包含两个属性信息,图书ID和图书数量bookcount,修改数量时要先确定图书ID号,

否则会修改所有的图书信息记录。

因为图书ID不需要显示,所以<input>type为hidden

2)创建修改图书数量的servlet对象,其名为“UpdateServlet”。

由于表单提交的请求时“post”所以在更新类中编写doPost方法处理修改图书信息的请求

package com.xhd.bean;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class UpdateServlet
 */
public class UpdateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int id = Integer.valueOf(request.getParameter("id"));
		int bookCount = Integer.valueOf(request.getParameter("bookCount")); 
		try {
			// 加载数据库驱动,注册到驱动管理器
			Class.forName("com.mysql.jdbc.Driver");
			// 数据库连接字符串
			String url = "jdbc:mysql://localhost:3306/db_database11";
			// 数据库用户名
			String username = "root";
			// 数据库密码
			String password = "1234";
			// 创建Connection连接
			Connection conn = DriverManager.getConnection(url,username,password);
			// 更新SQL语句
			String sql = "update tb_book set bookcount=? where id=?";
			// 获取PreparedStatement
			PreparedStatement ps = conn.prepareStatement(sql);
			// 对SQL语句中的第一个参数赋值
			ps.setInt(1, bookCount);
			// 对SQL语句中的第二个参数赋值
			ps.setInt(2, id);
			// 执行更新操作
			ps.executeUpdate();
			// 关闭PreparedStatement
			ps.close();
			// 关闭Connection
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 
		// 重定向到FindServlet
		response.sendRedirect("FindServlet");
	}

}

HttpServletRequest接受的参数值为String类型,图书ID和图书数量我int类型,通过Integer类的valueOf()方法实现。

查看信息


修改之后页面重定向到FindServlet.jsp


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值