通過一個綜合型的例子加深對JDBC操作資料庫的增、删、改、查的運用。
經典的圖書資訊錄入執行個體
設計資料庫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code>CREATE</code> <code>TABLE</code> <code>`tb_books`</code>
<code>(</code>
<code> </code><code>`id` </code><code>int</code><code>(10) unsigned </code><code>NOT</code> <code>NULL</code> <code>AUTO_INCREMENT,</code>
<code> </code>
<code> </code><code>`</code><code>name</code><code>` </code><code>varchar</code><code>(45) </code><code>NOT</code> <code>NULL</code><code>,</code>
<code> </code><code>`price` </code><code>double</code> <code>NOT</code> <code>NULL</code><code>,</code>
<code> </code><code>`bookCount` </code><code>int</code><code>(10) unsigned </code><code>NOT</code> <code>NULL</code><code>,</code>
<code> </code><code>`author` </code><code>varchar</code><code>(45) </code><code>NOT</code> <code>NULL</code><code>,</code>
<code> </code><code>PRIMARY</code> <code>KEY</code> <code>(`id`)</code>
<code>)</code>
<a href="http://s3.51cto.com/wyfs02/M01/11/C2/wKioL1Lc1R6gdL0NAAHwzIdUb9A861.jpg" target="_blank"></a>
寫一個Book類對圖書資訊進行封裝
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<code>package</code> <code>com.lixiyu;</code>
<code>public</code> <code>class</code> <code>Book {</code>
<code>private</code> <code>int</code> <code>id;</code>
<code>private</code> <code>String name;</code>
<code>private</code> <code>double</code> <code>price;</code>
<code>private</code> <code>int</code> <code>bookCount;</code>
<code>private</code> <code>String author;</code>
<code>public</code> <code>int</code> <code>getId(){</code>
<code> </code><code>return</code> <code>id;</code>
<code>}</code>
<code>public</code> <code>void</code> <code>setId(</code><code>int</code> <code>id){</code>
<code> </code><code>this</code><code>.id=id;</code>
<code>public</code> <code>String getName(){</code>
<code> </code><code>return</code> <code>name;</code>
<code>public</code> <code>void</code> <code>setName(String name){</code>
<code> </code><code>this</code><code>.name=name;</code>
<code>public</code> <code>double</code> <code>getPrice(){</code>
<code> </code><code>return</code> <code>price;</code>
<code>public</code> <code>void</code> <code>setPrice(</code><code>double</code> <code>price){</code>
<code> </code><code>this</code><code>.price=price;</code>
<code>public</code> <code>int</code> <code>getbookCount(){</code>
<code> </code><code>return</code> <code>bookCount;</code>
<code>public</code> <code>void</code> <code>setbookCount(</code><code>int</code> <code>bookCount){</code>
<code> </code><code>this</code><code>.bookCount=bookCount;</code>
<code>public</code> <code>String getAuthor(){</code>
<code> </code><code>return</code> <code>author;</code>
<code>public</code> <code>void</code> <code>setAuthor(String author){</code>
<code> </code><code>this</code><code>.author=author;</code>
添加(insert)圖書資訊操作
建立AddBook.jsp頁面,用于對添加圖書資訊進行處理
39
40
41
42
43
<code><%@ page language="java" contentType="text/html; charset=GB18030"</code>
<code> </code><code>pageEncoding="GB18030"%></code>
<code> </code><code><%@page import="java.sql.Connection"%></code>
<code><%@page import="java.sql.DriverManager"%></code>
<code><%@page import="java.sql.PreparedStatement"%></code>
<code><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></code>
<code><</code><code>html</code><code>></code>
<code><</code><code>head</code><code>></code>
<code><</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>content</code><code>=</code><code>"text/html; charset=GB18030"</code><code>></code>
<code><</code><code>title</code><code>>Insert title here</</code><code>title</code><code>></code>
<code></</code><code>head</code><code>></code>
<code><</code><code>body</code><code>></code>
<code><%request.setCharacterEncoding("UTF-8"); %></code>
<code><</code><code>jsp:useBean</code> <code>id</code><code>=</code><code>"book"</code> <code>class</code><code>=</code><code>"com.lixiyu.Book"</code><code>></</code><code>jsp:useBean</code><code>></code>
<code><</code><code>jsp:setProperty</code> <code>property</code><code>=</code><code>"*"</code> <code>name</code><code>=</code><code>"book"</code><code>/></code>
<code><%</code>
<code>try{</code>
<code> </code><code>Class.forName("com.mysql.jdbc.Driver");//加載資料庫驅動,注冊到驅動管理器</code>
<code> </code><code>String url="jdbc:mysql://localhost:3306/db_test";//資料庫連接配接字元串</code>
<code> </code><code>String username="root";//資料庫使用者名</code>
<code> </code><code>String password="lixiyu";//資料庫密碼</code>
<code> </code><code>Connection conn=DriverManager.getConnection(url,username,password);//建立Connection連接配接</code>
<code> </code><code>String sql="insert into tb_books(name,price,bookCount,author)values(?,?,?,?)";//添加圖書資訊sql語句</code>
<code> </code>
<code> </code><code>PreparedStatement ps=conn.prepareStatement(sql);//擷取PreparedStatement</code>
<code> </code><code>ps.setString(1,book.getName());//對SQL語句中的第1個參數指派</code>
<code> </code><code>ps.setDouble(2,book.getPrice());</code>
<code> </code><code>ps.setInt(3,book.getbookCount());</code>
<code> </code><code>ps.setString(4,book.getAuthor());//對SQL語句中的第4個參數指派</code>
<code> </code><code>int row=ps.executeUpdate();//執行更新操作,傳回所影響的行數</code>
<code> </code><code>if(row>0){</code>
<code> </code><code>out.print("成功添加了"+row+"條資料");</code>
<code> </code><code>}</code>
<code> </code><code>ps.close();</code>
<code> </code><code>conn.close();</code>
<code>}catch(Exception e){</code>
<code> </code><code>out.print("圖書資訊添加失敗!");</code>
<code> </code><code>e.printStackTrace();</code>
<code>%></code>
<code></</code><code>body</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"insert.jsp"</code><code>>傳回</</code><code>a</code><code>></code>
<code></</code><code>html</code><code>></code>
建立insert.jsp,用于建立添加圖書資訊所需的表單
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<code><%@ page language="java" contentType="text/html; charset=UTF-8"</code>
<code> </code><code>pageEncoding="UTF-8"%></code>
<code><</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>content</code><code>=</code><code>"text/html; charset=UTF-8"</code><code>></code>
<code><</code><code>title</code><code>>添加圖書資訊</</code><code>title</code><code>></code>
<code><</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>></code>
<code> </code><code>function check(form){</code>
<code> </code><code>with(form){</code>
<code> </code><code>if(name.value == ""){</code>
<code> </code><code>alert("圖書名稱不能為空");</code>
<code> </code><code>return false;</code>
<code> </code><code>}</code>
<code> </code><code>if(price.value == ""){</code>
<code> </code><code>alert("價格不能為空");</code>
<code> </code><code>if(author.value == ""){</code>
<code> </code><code>alert("作者不能為空");</code>
<code> </code><code>return true;</code>
<code> </code><code>}</code>
<code></</code><code>script</code><code>></code>
<code> </code><code><</code><code>form</code> <code>action</code><code>=</code><code>"AddBook.jsp"</code> <code>method</code><code>=</code><code>"post"</code> <code>onsubmit</code><code>=</code><code>"return check(this);"</code><code>></code>
<code> </code><code><</code><code>table</code> <code>align</code><code>=</code><code>"center"</code> <code>width</code><code>=</code><code>"450"</code><code>></code>
<code> </code><code><</code><code>tr</code><code>></code>
<code> </code><code><</code><code>td</code> <code>align</code><code>=</code><code>"center"</code> <code>colspan</code><code>=</code><code>"2"</code><code>></code>
<code> </code><code><</code><code>h2</code><code>>添加圖書資訊</</code><code>h2</code><code>></code>
<code> </code><code><</code><code>hr</code><code>></code>
<code> </code><code></</code><code>td</code><code>></code>
<code> </code><code></</code><code>tr</code><code>></code>
<code> </code><code><</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>>圖書名稱:</</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"name"</code> <code>/></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>>價 格:</</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"price"</code> <code>/></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>>數 量:</</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"bookCount"</code> <code>/></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>>作 者:</</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"author"</code> <code>/></</code><code>td</code><code>></code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>value</code><code>=</code><code>"添 加"</code><code>></code>
<code> </code><code></</code><code>table</code><code>></code>
<code> </code><code></</code><code>form</code><code>></code>
最後運作
<a href="http://s3.51cto.com/wyfs02/M00/11/C2/wKioL1Lc2WaiySd8AABt3y2sBH4326.jpg" target="_blank"></a>
成功:
<a href="http://s3.51cto.com/wyfs02/M01/11/C3/wKiom1Lc2Yui_pabAABF1HO1eQA506.jpg" target="_blank"></a>
查詢(select)圖書資訊操作
建立FindServlet的servlet對象用于查詢所有圖書的資訊。編寫doGet()方法,建立資料庫連接配接,并将所有查詢資料集合放置HttpServletRequest對象中,将請求轉發到jsp頁面中:
62
63
64
65
66
67
68
69
<code>import</code> <code>java.io.IOException;</code>
<code>import</code> <code>java.sql.Connection;</code>
<code>import</code> <code>java.sql.DriverManager;</code>
<code>import</code> <code>java.sql.ResultSet;</code>
<code>import</code> <code>java.sql.SQLException;</code>
<code>import</code> <code>java.sql.Statement;</code>
<code>import</code> <code>java.util.ArrayList;</code>
<code>import</code> <code>java.util.List;</code>
<code>import</code> <code>javax.servlet.ServletException;</code>
<code>import</code> <code>javax.servlet.annotation.WebServlet;</code>
<code>import</code> <code>javax.servlet.http.HttpServlet;</code>
<code>import</code> <code>javax.servlet.http.HttpServletRequest;</code>
<code>import</code> <code>javax.servlet.http.HttpServletResponse;</code>
<code>/**</code>
<code> </code><code>* Servlet implementation class FindServlet</code>
<code> </code><code>*/</code>
<code>public</code> <code>class</code> <code>FindServlet </code><code>extends</code> <code>HttpServlet {</code>
<code> </code><code>private</code> <code>static</code> <code>final</code> <code>long</code> <code>serialVersionUID = 1L;</code>
<code> </code>
<code> </code><code>/**</code>
<code> </code><code>* @see HttpServlet#HttpServlet()</code>
<code> </code><code>*/</code>
<code> </code><code>public</code> <code>FindServlet() {</code>
<code> </code><code>super</code><code>();</code>
<code> </code><code>// TODO Auto-generated constructor stub</code>
<code> </code><code>* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)</code>
<code> </code><code>protected</code> <code>void</code> <code>doGet(HttpServletRequest request, HttpServletResponse response) </code><code>throws</code> <code>ServletException, IOException {</code>
<code> </code><code>// TODO Auto-generated method stub</code>
<code> </code><code>try</code><code>{</code>
<code> </code><code>Class.forName(</code><code>"com.mysql.jdbc.Driver"</code><code>);</code>
<code> </code><code>String url=</code><code>"jdbc:mysql://localhost:3306/db_test"</code><code>;</code>
<code> </code><code>String username=</code><code>"root"</code><code>;</code>
<code> </code><code>String password=</code><code>"lixiyu"</code><code>;</code>
<code> </code><code>Connection conn=DriverManager.getConnection(url,username,password);</code>
<code> </code><code>Statement stmt=conn.createStatement();</code><code>//擷取statement對象</code>
<code> </code><code>String sql=</code><code>"select * from tb_books"</code><code>;</code>
<code> </code><code>ResultSet rs=stmt.executeQuery(sql);</code>
<code> </code><code>List<Book> list=</code><code>new</code> <code>ArrayList<Book>();</code><code>//執行個體化list對象</code>
<code> </code><code>while</code><code>(rs.next()){</code>
<code> </code><code>Book book=</code><code>new</code> <code>Book();</code>
<code> </code><code>book.setId(rs.getInt(</code><code>"id"</code><code>));</code><code>//對id屬性指派</code>
<code> </code><code>book.setName(rs.getString(</code><code>"name"</code><code>));</code>
<code> </code><code>book.setPrice(rs.getDouble(</code><code>"price"</code><code>));</code>
<code> </code><code>book.setbookCount(rs.getInt(</code><code>"bookCount"</code><code>));</code>
<code> </code><code>book.setAuthor(rs.getString(</code><code>"author"</code><code>));</code>
<code> </code><code>list.add(book);</code><code>//将圖書對象添加到集合中</code>
<code> </code><code>request.setAttribute(</code><code>"list"</code><code>, list);</code><code>//将圖書集合放置到request中</code>
<code> </code><code>rs.close();</code><code>//關閉ResultSet</code>
<code> </code><code>stmt.close();</code><code>//關閉Statement</code>
<code> </code><code>conn.close();</code><code>//關閉Connection</code>
<code> </code><code>}</code><code>catch</code><code>(ClassNotFoundException e){</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code><code>catch</code><code>(SQLException e){</code>
<code> </code><code>request.getRequestDispatcher(</code><code>"book_list.jsp"</code><code>).forward(request, response);</code><code>//請求轉發到book_List.jsp</code>
<code> </code><code>* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)</code>
<code> </code><code>protected</code> <code>void</code> <code>doPost(HttpServletRequest request, HttpServletResponse response) </code><code>throws</code> <code>ServletException, IOException {</code>
在web.xml中添加映射:
<code><</code><code>welcome-file-list</code><code>></code>
<code> </code><code><</code><code>welcome-file</code><code>>index.html</</code><code>welcome-file</code><code>></code>
<code> </code><code><</code><code>welcome-file</code><code>>index.htm</</code><code>welcome-file</code><code>></code>
<code> </code><code><</code><code>welcome-file</code><code>>index.jsp</</code><code>welcome-file</code><code>></code>
<code> </code><code><</code><code>welcome-file</code><code>>default.html</</code><code>welcome-file</code><code>></code>
<code> </code><code><</code><code>welcome-file</code><code>>default.htm</</code><code>welcome-file</code><code>></code>
<code> </code><code><</code><code>welcome-file</code><code>>default.jsp</</code><code>welcome-file</code><code>></code>
<code> </code><code></</code><code>welcome-file-list</code><code>></code>
<code> </code><code><</code><code>servlet</code><code>></code>
<code> </code><code><</code><code>description</code><code>></</code><code>description</code><code>></code>
<code> </code><code><</code><code>display-name</code><code>>FindServlet</</code><code>display-name</code><code>></code>
<code> </code><code><</code><code>servlet-name</code><code>>FindServlet</</code><code>servlet-name</code><code>></code>
<code> </code><code><</code><code>servlet-class</code><code>>com.lixiyu.FindServlet</</code><code>servlet-class</code><code>></code>
<code> </code><code></</code><code>servlet</code><code>></code>
<code> </code><code><</code><code>servlet-mapping</code><code>></code>
<code> </code><code><</code><code>url-pattern</code><code>>/FindServlet</</code><code>url-pattern</code><code>></code>
<code> </code><code></</code><code>servlet-mapping</code><code>></code>
建立book_list.jsp頁面,用于顯示查詢到的所有圖書資訊
<code><%@page import="java.util.List"%></code>
<code><%@page import="com.lixiyu.Book"%></code>
<code><</code><code>title</code><code>>所有圖書資訊</</code><code>title</code><code>></code>
<code><</code><code>style</code> <code>type</code><code>=</code><code>"text/css"</code><code>></code>
<code> </code><code>td{font-size: 12px;}</code>
<code> </code><code>h2{margin: 0px}</code>
<code> </code>
<code></</code><code>style</code><code>></code>
<code> </code><code><</code><code>table</code> <code>align</code><code>=</code><code>"center"</code> <code>width</code><code>=</code><code>"450"</code> <code>border</code><code>=</code><code>"1"</code> <code>height</code><code>=</code><code>"180"</code> <code>bordercolor</code><code>=</code><code>"white"</code> <code>bgcolor</code><code>=</code><code>""</code> <code>cellpadding</code><code>=</code><code>"1"</code> <code>cellspacing</code><code>=</code><code>"1"</code><code>></code>
<code> </code><code><</code><code>tr</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>></code>
<code> </code><code><</code><code>td</code> <code>align</code><code>=</code><code>"center"</code> <code>colspan</code><code>=</code><code>"5"</code><code>></code>
<code> </code><code><</code><code>h2</code><code>>所有圖書資訊</</code><code>h2</code><code>></code>
<code> </code><code></</code><code>td</code><code>></code>
<code> </code><code></</code><code>tr</code><code>></code>
<code> </code><code><</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"#e1ffc1"</code> <code>></code>
<code> </code><code><!-- <td><b>ID</b></td>--></code>
<code> </code><code><</code><code>td</code><code>><</code><code>b</code><code>>圖書名稱</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>b</code><code>>價格</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>b</code><code>>數量</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><</code><code>b</code><code>>作者</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code> </code><code><%</code>
<code> </code><code>// 擷取圖書資訊集合</code>
<code> </code><code>List<</code><code>Book</code><code>>list = (List<</code><code>Book</code><code>>)request.getAttribute("list");</code>
<code> </code><code>// 判斷集合是否有效</code>
<code> </code><code>if(list == null || list.size() < </code><code>1</code><code>){</code>
<code> </code><code>out.print("沒有資料!");</code>
<code> </code><code>}else{</code>
<code> </code><code>// 周遊圖書集合中的資料</code>
<code> </code><code>for(Book book : list){</code>
<code> </code><code>%></code>
<code> </code><code><</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>></code>
<code> </code><code><!--<td><%=book.getId()%></td>--></code>
<code> </code><code><</code><code>td</code><code>><%=book.getName()%></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><%=book.getPrice()%></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><%=book.getbookCount()%></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>><%=book.getAuthor()%></</code><code>td</code><code>></code>
<code> </code><code><</code><code>td</code><code>></code>
<code> </code><code><</code><code>form</code> <code>action</code><code>=</code><code>"UpdateServlet"</code> <code>method</code><code>=</code><code>"post"</code> <code>onsubmit</code><code>=</code><code>"return check(this);"</code><code>></code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>"hidden"</code> <code>name</code><code>=</code><code>"id"</code> <code>value="<%=book.getId()%>"></code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"bookCount"</code> <code>size</code><code>=</code><code>"3"</code><code>></code>
<code> </code>
<code> </code><code></</code><code>form</code><code>></code>
<code> </code><code></</code><code>tr</code><code>></code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code></</code><code>table</code><code>></code>
<code> </code><code><</code><code>br</code><code>></code>
建立index.jsp首頁,用于請求檢視所有圖書資訊:
<code><</code><code>a</code> <code>href</code><code>=</code><code>"FindServlet"</code><code>>檢視所有圖書</</code><code>a</code><code>></code>
運作該執行個體
<a href="http://s3.51cto.com/wyfs02/M00/11/C2/wKioL1Lc3QTylxv_AABOjiFfdvU910.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/11/C3/wKiom1Lc3SiR9yGMAACeYDmI6lY322.jpg" target="_blank"></a>
修改(update)圖書資訊操作
在book_list.jsp中添多一列修改:
<code><</code><code>td</code><code>></code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>value</code><code>=</code><code>"修改"</code><code>></code>
<code> </code><code></</code><code>form</code><code>></</code><code>td</code><code>></code>
建立UpdateServlet.jsp編寫doPost方法對圖書資訊請求進行處理:
<code>import</code> <code>java.sql.PreparedStatement;</code>
<code> </code><code>* Servlet implementation class UpdateServlet</code>
<code>public</code> <code>class</code> <code>UpdateServlet </code><code>extends</code> <code>HttpServlet {</code>
<code> </code><code>int</code> <code>id = Integer.valueOf(request.getParameter(</code><code>"id"</code><code>));</code>
<code> </code><code>int</code> <code>bookCount = Integer.valueOf(request.getParameter(</code><code>"bookCount"</code><code>));</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>// 加載資料庫驅動,注冊到驅動管理器</code>
<code> </code><code>// 資料庫連接配接字元串</code>
<code> </code><code>String url = </code><code>"jdbc:mysql://localhost:3306/db_test"</code><code>;</code>
<code> </code><code>// 資料庫使用者名</code>
<code> </code><code>String username = </code><code>"root"</code><code>;</code>
<code> </code><code>// 資料庫密碼</code>
<code> </code><code>String password = </code><code>"lixiyu"</code><code>;</code>
<code> </code><code>// 建立Connection連接配接</code>
<code> </code><code>Connection conn = DriverManager.getConnection(url,username,password);</code>
<code> </code><code>// 更新SQL語句</code>
<code> </code><code>String sql = </code><code>"update tb_books set bookcount=? where id=?"</code><code>;</code>
<code> </code><code>// 擷取PreparedStatement</code>
<code> </code><code>PreparedStatement ps = conn.prepareStatement(sql);</code>
<code> </code><code>// 對SQL語句中的第一個參數指派</code>
<code> </code><code>ps.setInt(</code><code>1</code><code>, bookCount);</code>
<code> </code><code>// 對SQL語句中的第二個參數指派</code>
<code> </code><code>ps.setInt(</code><code>2</code><code>, id);</code>
<code> </code><code>// 執行更新操作</code>
<code> </code><code>ps.executeUpdate();</code>
<code> </code><code>// 關閉PreparedStatement</code>
<code> </code><code>ps.close();</code>
<code> </code><code>// 關閉Connection</code>
<code> </code><code>conn.close();</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>// 重定向到FindServlet</code>
<code> </code><code>response.sendRedirect(</code><code>"FindServlet"</code><code>);</code>
添加xml映射
<code><</code><code>servlet</code><code>></code>
<code> </code><code><</code><code>display-name</code><code>>UpdateServlet</</code><code>display-name</code><code>></code>
<code> </code><code><</code><code>servlet-name</code><code>>UpdateServlet</</code><code>servlet-name</code><code>></code>
<code> </code><code><</code><code>servlet-class</code><code>>com.lixiyu.UpdateServlet</</code><code>servlet-class</code><code>></code>
<code> </code><code></</code><code>servlet</code><code>></code>
<code> </code><code><</code><code>servlet-mapping</code><code>></code>
<code> </code><code><</code><code>url-pattern</code><code>>/UpdateServlet</</code><code>url-pattern</code><code>></code>
<code> </code><code></</code><code>servlet-mapping</code><code>></code>
運作後
<a href="http://s3.51cto.com/wyfs02/M00/11/C3/wKiom1Lc4FfSbOO9AAD9RNsUFKY761.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/11/C3/wKiom1Lc4GbCah6KAAEDugnF2Y4344.jpg" target="_blank"></a>
删除(delete)圖書資訊操作
編寫删除操作的servlet,命名為DeleteServlet:
<code> </code><code>* Servlet implementation class DeleteServlet</code>
<code>public</code> <code>class</code> <code>DeleteServlet </code><code>extends</code> <code>HttpServlet {</code>
<code> </code>
<code> </code><code>// 擷取圖書id</code>
<code> </code><code>// 删除圖書資訊的SQL語句</code>
<code> </code><code>String sql = </code><code>"delete from tb_books where id=?"</code><code>;</code>
<code> </code><code>// 對SQL語句中的第一個占位符指派</code>
<code> </code><code>ps.setInt(</code><code>1</code><code>, id);</code>
添加xml映射:
<code> </code><code><</code><code>description</code><code>></</code><code>description</code><code>></code>
<code> </code><code><</code><code>display-name</code><code>>DeleteServlet</</code><code>display-name</code><code>></code>
<code> </code><code><</code><code>servlet-name</code><code>>DeleteServlet</</code><code>servlet-name</code><code>></code>
<code> </code><code><</code><code>servlet-class</code><code>>com.lixiyu.DeleteServlet</</code><code>servlet-class</code><code>></code>
<code> </code><code><</code><code>url-pattern</code><code>>/DeleteServlet</</code><code>url-pattern</code><code>></code>
<code></</code><code>web-app</code><code>></code>
整合CRUD操作
在前面book_list.jsp頁面中進行整合:
<code>td{font-size: 12px;}</code>
<code>h2{margin: 0px}</code>
<code><</code><code>table</code> <code>align</code><code>=</code><code>"center"</code> <code>width</code><code>=</code><code>"450"</code> <code>border</code><code>=</code><code>"1"</code> <code>height</code><code>=</code><code>"180"</code> <code>bordercolor</code><code>=</code><code>"white"</code> <code>bgcolor</code><code>=</code><code>""</code> <code>cellpadding</code><code>=</code><code>"1"</code> <code>cellspacing</code><code>=</code><code>"1"</code><code>></code>
<code><</code><code>tr</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>></code>
<code><</code><code>td</code> <code>align</code><code>=</code><code>"center"</code> <code>colspan</code><code>=</code><code>"5"</code><code>></code>
<code><</code><code>h2</code><code>>所有圖書資訊</</code><code>h2</code><code>></code>
<code></</code><code>td</code><code>></code>
<code></</code><code>tr</code><code>></code>
<code><</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"#e1ffc1"</code> <code>></code>
<code><!-- <td><b>ID</b></td>--></code>
<code><</code><code>td</code><code>><</code><code>b</code><code>>圖書名稱</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><</code><code>b</code><code>>價格</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><</code><code>b</code><code>>數量</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><</code><code>b</code><code>>作者</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><</code><code>b</code><code>>修改數量</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><</code><code>b</code><code>>删 除</</code><code>b</code><code>></</code><code>td</code><code>></code>
<code>// 擷取圖書資訊集合</code>
<code>List<</code><code>Book</code><code>>list = (List<</code><code>Book</code><code>>)request.getAttribute("list");</code>
<code>// 判斷集合是否有效</code>
<code>if(list == null || list.size() < </code><code>1</code><code>){</code>
<code>out.print("沒有資料!");</code>
<code>}else{</code>
<code>// 周遊圖書集合中的資料</code>
<code>for(Book book : list){</code>
<code><</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>></code>
<code><!--<td><%=book.getId()%></td>--></code>
<code><</code><code>td</code><code>><%=book.getName()%></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><%=book.getPrice()%></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><%=book.getbookCount()%></</code><code>td</code><code>></code>
<code><</code><code>td</code><code>><%=book.getAuthor()%></</code><code>td</code><code>></code>
<code><</code><code>form</code> <code>action</code><code>=</code><code>"UpdateServlet"</code> <code>method</code><code>=</code><code>"post"</code> <code>onsubmit</code><code>=</code><code>"return check(this);"</code><code>></code>
<code><</code><code>input</code> <code>type</code><code>=</code><code>"hidden"</code> <code>name</code><code>=</code><code>"id"</code> <code>value="<%=book.getId()%>"></code>
<code><</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"bookCount"</code> <code>size</code><code>=</code><code>"3"</code><code>></code>
<code><</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>value</code><code>=</code><code>"修改"</code><code>></code>
<code></</code><code>form</code><code>></code>
<code><</code><code>td</code><code>><</code><code>a</code> <code>href="DeleteServlet?id=<%=book.getId() %>">删除</</code><code>a</code><code>></code>
<code></</code><code>table</code><code>></code>
<code><</code><code>br</code><code>></code>
<code><</code><code>center</code><code>></code>
<code><</code><code>form</code> <code>action</code><code>=</code><code>"insert.jsp"</code> <code>method</code><code>=</code><code>"post"</code> <code>onsubmit</code><code>=</code><code>"return check(this);"</code><code>></code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>name</code><code>=</code><code>""</code> <code>value</code><code>=</code><code>"添加資料"</code> <code>></code>
<code></</code><code>form</code><code>></</code><code>center</code><code>></code>
将前面AddBook.jsp中的頁面連結進行修改
<code><</code><code>a</code> <code>href</code><code>=</code><code>"FindServlet"</code><code>>傳回</</code><code>a</code><code>></code>
是以整個操作都回歸到book_list.jsp來顯示了
運作
<a href="http://s3.51cto.com/wyfs02/M00/11/C2/wKioL1Lc4ziS8nEnAABdTGVs-EI747.jpg" target="_blank"></a>
CRUD操作整合到一個頁面顯示:
<a href="http://s3.51cto.com/wyfs02/M02/11/C3/wKiom1Lc416S0m57AAFWtV79j3M565.jpg" target="_blank"></a>
這次JDBC先寫到這,下次有時間再總結一下批處理、調用存儲過程、分頁查詢的相關操作。
本文轉自lixiyu 51CTO部落格,原文連結:http://blog.51cto.com/lixiyu/1353185,如需轉載請自行聯系原作者