使用JDBC修改數據庫中的數據,起操作方法是和添加數據差不多的,只不過在修改數據的時候還要用到UPDATE語句來實現的,例如:把圖書信息id為1的圖書數量改為100,其sql語句是:update book set bookCount=100 where id=1。在實際開發過程中,通常會由程序傳遞SQL語句中的參數,所以修改數據也通常使用PreparedStatement對象進行操作。
實例代碼:
(1)index.jsp

1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4 <title>修改數據</title> 5 </head> 6 <body> 7 <a href="FindServlet">修改數據</a> 8 </body> 9 </html>
(2)book_list.jsp代碼

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import="com.book.Book" %> 4 <%@ page import="java.util.ArrayList" %> 5 <%@ page import="java.util.List" %> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <title>修改圖書信息</title> 11 <style> 12 td{ 13 font-size:12px; 14 } 15 h2{ 16 margin:2px; 17 } 18 </style> 19 <script type="text/javascript"> 20 function check(form){ 21 with(form){ 22 if(bookCount.value == ""){ 23 alert("請輸入更新數量!"); 24 return false; 25 } 26 if(isNaN(bookCount.value)){ 27 alert("格式錯誤!"); 28 return false; 29 } 30 return true; 31 } 32 } 33 </script> 34 </head> 35 <body> 36 <div style="text-align:center;"> 37 <table align="center" width="500px" border="1" height="170px" bordercolor="white" bgcolor="black" cellpadding="1"> 38 <tr bgcolor="white"> 39 <td align="center" colspan="6"> 40 <h2>所有圖書信息 </h2> 41 </td> 42 </tr> 43 <tr align="center" bgcolor="#e1ffc1"> 44 <td><b>ID</b></td> 45 <td><b>圖書名稱</b></td> 46 <td><b>價格</b></td> 47 <td><b>作者</b></td> 48 <td><b>修改數量</b></td> 49 </tr> 50 <% 51 List<Book> list = (List<Book>)request.getAttribute("list"); 52 if(list ==null || list.size() < 1){ 53 out.print("數據為空"); 54 }else{ 55 for(Book book:list){ 56 57 58 59 %> 60 <tr align="center" bgcolor="white"> 61 <td><%= book.getId() %></td> 62 <td><%= book.getName() %></td> 63 <td><%= book.getPrice() %></td> 64 <td><%= book.getBookCount() %></td> 65 <td><%= book.getAuthor() %></td> 66 <td> 67 <form action="UpdateServlet" method="post" onsubmit="return check(this);"> 68 <input type="hidden" name="id" value="<%= book.getId() %>" > 69 <input type="text" name="bookCount" size="3"> 70 <input type="submit" value="修 改"> 71 </form> 72 </td> 73 </tr> 74 <% 75 } 76 } 77 %> 78 </table> 79 </div> 80 </body> 81 </html>
(3)Book類對象

1 package com.book; 2 3 public class Book { 4 private int id; 5 private String name; 6 private double price; 7 private int bookCount; 8 private String author; 9 public int getId() { 10 return id; 11 } 12 public void setId(int id) { 13 this.id = id; 14 } 15 public String getName() { 16 return name; 17 } 18 public void setName(String name) { 19 this.name = name; 20 } 21 public double getPrice() { 22 return price; 23 } 24 public void setPrice(double price) { 25 this.price = price; 26 } 27 public int getBookCount() { 28 return bookCount; 29 } 30 public void setBookCount(int bookCount) { 31 this.bookCount = bookCount; 32 } 33 public String getAuthor() { 34 return author; 35 } 36 public void setAuthor(String author) { 37 this.author = author; 38 } 39 40 }
(4)DBConnection.java

1 package com.db; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class DBConnection { 8 private String url = "jdbc:mysql://localhost:3306/test"; 9 private String driver = "com.mysql.jdbc.DriverManager"; 10 private String username = "root"; 11 private String password = "123456"; 12 Connection conn = null; 13 public Connection getConn() { 14 try { 15 16 Class.forName(driver); 17 18 conn = DriverManager.getConnection(url,username,password); 19 20 }catch(ClassNotFoundException e1) { 21 e1.printStackTrace(); 22 }catch (SQLException e) { 23 // TODO Auto-generated catch block 24 e.printStackTrace(); 25 } 26 return conn; 27 } 28 29 }
(5)FindServlet.java

1 package com.db; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class DBConnection { 8 private String url = "jdbc:mysql://localhost:3306/test"; 9 private String driver = "com.mysql.jdbc.DriverManager"; 10 private String username = "root"; 11 private String password = "123456"; 12 Connection conn = null; 13 public Connection getConn() { 14 try { 15 16 Class.forName(driver); 17 18 conn = DriverManager.getConnection(url,username,password); 19 20 }catch(ClassNotFoundException e1) { 21 e1.printStackTrace(); 22 }catch (SQLException e) { 23 // TODO Auto-generated catch block 24 e.printStackTrace(); 25 } 26 return conn; 27 } 28 29 }
(6)UpdateServlet.java

1 package com.servlet; 2 3 import java.io.IOException; 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 13 public class UpdateServlet extends HttpServlet { 14 15 private static final long serialVersionUID = 1L; 16 protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ 17 int id = Integer.valueOf(request.getParameter("id")); 18 int bookCount = Integer.valueOf(request.getParameter("bookCount")); 19 try { 20 Class.forName("com.mysql.jdbc.Driver"); 21 String url = "jdbc:mysql://localhost:3306/test"; 22 String username = "root"; 23 String password = "123456"; 24 String sql = "update book set bookCount=? where id=?"; 25 Connection conn = DriverManager.getConnection(url,username,password); 26 PreparedStatement ps = conn.prepareStatement(sql); 27 ps.setInt(1, bookCount); 28 ps.setInt(2, id); 29 ps.executeUpdate(); 30 ps.close(); 31 conn.close(); 32 }catch(Exception e) { 33 e.printStackTrace(); 34 } 35 36 //重定向到FindServlet 37 response.sendRedirect("FindServlet"); 38 } 39 40 }
程序運行結果:
index.jsp頁面
book_list.jsp頁面