天天看點

JDBC操作資料庫——CRUD綜合應用執行個體

通過一個綜合型的例子加深對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>&lt;%@ page language="java" contentType="text/html; charset=GB18030"</code>

<code>    </code><code>pageEncoding="GB18030"%&gt;</code>

<code>    </code><code>&lt;%@page import="java.sql.Connection"%&gt;</code>

<code>&lt;%@page import="java.sql.DriverManager"%&gt;</code>

<code>&lt;%@page import="java.sql.PreparedStatement"%&gt;</code>

<code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;</code>

<code>&lt;</code><code>html</code><code>&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>title</code><code>&gt;Insert title here&lt;/</code><code>title</code><code>&gt;</code>

<code>&lt;/</code><code>head</code><code>&gt;</code>

<code>&lt;</code><code>body</code><code>&gt;</code>

<code>&lt;%request.setCharacterEncoding("UTF-8"); %&gt;</code>

<code>&lt;</code><code>jsp:useBean</code> <code>id</code><code>=</code><code>"book"</code> <code>class</code><code>=</code><code>"com.lixiyu.Book"</code><code>&gt;&lt;/</code><code>jsp:useBean</code><code>&gt;</code>

<code>&lt;</code><code>jsp:setProperty</code> <code>property</code><code>=</code><code>"*"</code> <code>name</code><code>=</code><code>"book"</code><code>/&gt;</code>

<code>&lt;%</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&gt;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>%&gt;</code>

<code>&lt;/</code><code>body</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"insert.jsp"</code><code>&gt;傳回&lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;/</code><code>html</code><code>&gt;</code>

建立insert.jsp,用于建立添加圖書資訊所需的表單

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

<code>&lt;%@ page language="java" contentType="text/html; charset=UTF-8"</code>

<code>    </code><code>pageEncoding="UTF-8"%&gt;</code>

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>title</code><code>&gt;添加圖書資訊&lt;/</code><code>title</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;</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>&lt;/</code><code>script</code><code>&gt;</code>

<code>    </code><code>&lt;</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>&gt;</code>

<code>        </code><code>&lt;</code><code>table</code> <code>align</code><code>=</code><code>"center"</code> <code>width</code><code>=</code><code>"450"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>tr</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"center"</code> <code>colspan</code><code>=</code><code>"2"</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>h2</code><code>&gt;添加圖書資訊&lt;/</code><code>h2</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>hr</code><code>&gt;</code>

<code>                </code><code>&lt;/</code><code>td</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>&gt;圖書名稱:&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"name"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>&gt;價  格:&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"price"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>&gt;數  量:&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"bookCount"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"right"</code><code>&gt;作  者:&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>input</code> <code>type</code><code>=</code><code>"text"</code> <code>name</code><code>=</code><code>"author"</code> <code>/&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>value</code><code>=</code><code>"添 加"</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>table</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>form</code><code>&gt;</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&lt;Book&gt; list=</code><code>new</code> <code>ArrayList&lt;Book&gt;();</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>&lt;</code><code>welcome-file-list</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>welcome-file</code><code>&gt;index.html&lt;/</code><code>welcome-file</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>welcome-file</code><code>&gt;index.htm&lt;/</code><code>welcome-file</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>welcome-file</code><code>&gt;index.jsp&lt;/</code><code>welcome-file</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>welcome-file</code><code>&gt;default.html&lt;/</code><code>welcome-file</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>welcome-file</code><code>&gt;default.htm&lt;/</code><code>welcome-file</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>welcome-file</code><code>&gt;default.jsp&lt;/</code><code>welcome-file</code><code>&gt;</code>

<code> </code><code>&lt;/</code><code>welcome-file-list</code><code>&gt;</code>

<code> </code><code>&lt;</code><code>servlet</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>description</code><code>&gt;&lt;/</code><code>description</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>display-name</code><code>&gt;FindServlet&lt;/</code><code>display-name</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>servlet-name</code><code>&gt;FindServlet&lt;/</code><code>servlet-name</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>servlet-class</code><code>&gt;com.lixiyu.FindServlet&lt;/</code><code>servlet-class</code><code>&gt;</code>

<code> </code><code>&lt;/</code><code>servlet</code><code>&gt;</code>

<code> </code><code>&lt;</code><code>servlet-mapping</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>url-pattern</code><code>&gt;/FindServlet&lt;/</code><code>url-pattern</code><code>&gt;</code>

<code> </code><code>&lt;/</code><code>servlet-mapping</code><code>&gt;</code>

建立book_list.jsp頁面,用于顯示查詢到的所有圖書資訊

<code>&lt;%@page import="java.util.List"%&gt;</code>

<code>&lt;%@page import="com.lixiyu.Book"%&gt;</code>

<code>&lt;</code><code>title</code><code>&gt;所有圖書資訊&lt;/</code><code>title</code><code>&gt;</code>

<code>&lt;</code><code>style</code> <code>type</code><code>=</code><code>"text/css"</code><code>&gt;</code>

<code>    </code><code>td{font-size: 12px;}</code>

<code>    </code><code>h2{margin: 0px}</code>

<code>                                                                                                                                                                                                                                                                                                 </code> 

<code>&lt;/</code><code>style</code><code>&gt;</code>

<code>    </code><code>&lt;</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>&gt;</code>

<code>        </code><code>&lt;</code><code>tr</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"center"</code> <code>colspan</code><code>=</code><code>"5"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>h2</code><code>&gt;所有圖書資訊&lt;/</code><code>h2</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>td</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"#e1ffc1"</code> <code>&gt;</code>

<code>            </code><code>&lt;!--  &lt;td&gt;&lt;b&gt;ID&lt;/b&gt;&lt;/td&gt;--&gt;</code>

<code>            </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;圖書名稱&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;價格&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;數量&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;作者&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>            </code><code>&lt;%</code>

<code>                </code><code>// 擷取圖書資訊集合</code>

<code>                    </code><code>List&lt;</code><code>Book</code><code>&gt;list = (List&lt;</code><code>Book</code><code>&gt;)request.getAttribute("list");</code>

<code>                    </code><code>// 判斷集合是否有效</code>

<code>                    </code><code>if(list == null || list.size() &lt; </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>%&gt;</code>

<code>                </code><code>&lt;</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>&gt;</code>

<code>                    </code><code>&lt;!--&lt;td&gt;&lt;%=book.getId()%&gt;&lt;/td&gt;--&gt;</code>

<code>                    </code><code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getName()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getPrice()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getbookCount()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getAuthor()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</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>&gt;</code>

<code>                </code><code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>"hidden"</code> <code>name</code><code>=</code><code>"id"</code> <code>value="&lt;%=book.getId()%&gt;"&gt;</code>

<code>                </code><code>&lt;</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>&gt;</code>

<code>                                                                                                                                                                                                                                                                                                             </code> 

<code>                </code><code>&lt;/</code><code>form</code><code>&gt;</code>

<code>                </code><code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>                    </code><code>}</code>

<code>                </code><code>}</code>

<code>    </code><code>&lt;/</code><code>table</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>br</code><code>&gt;</code>

建立index.jsp首頁,用于請求檢視所有圖書資訊:

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"FindServlet"</code><code>&gt;檢視所有圖書&lt;/</code><code>a</code><code>&gt;</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>&lt;</code><code>td</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>value</code><code>=</code><code>"修改"</code><code>&gt;</code>

<code>                </code><code>&lt;/</code><code>form</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</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>&lt;</code><code>servlet</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>display-name</code><code>&gt;UpdateServlet&lt;/</code><code>display-name</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>servlet-name</code><code>&gt;UpdateServlet&lt;/</code><code>servlet-name</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>servlet-class</code><code>&gt;com.lixiyu.UpdateServlet&lt;/</code><code>servlet-class</code><code>&gt;</code>

<code>  </code><code>&lt;/</code><code>servlet</code><code>&gt;</code>

<code>  </code><code>&lt;</code><code>servlet-mapping</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>url-pattern</code><code>&gt;/UpdateServlet&lt;/</code><code>url-pattern</code><code>&gt;</code>

<code>  </code><code>&lt;/</code><code>servlet-mapping</code><code>&gt;</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>&lt;</code><code>description</code><code>&gt;&lt;/</code><code>description</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>display-name</code><code>&gt;DeleteServlet&lt;/</code><code>display-name</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>servlet-name</code><code>&gt;DeleteServlet&lt;/</code><code>servlet-name</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>servlet-class</code><code>&gt;com.lixiyu.DeleteServlet&lt;/</code><code>servlet-class</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>url-pattern</code><code>&gt;/DeleteServlet&lt;/</code><code>url-pattern</code><code>&gt;</code>

<code>&lt;/</code><code>web-app</code><code>&gt;</code>

整合CRUD操作

在前面book_list.jsp頁面中進行整合:

<code>td{font-size: 12px;}</code>

<code>h2{margin: 0px}</code>

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>tr</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>&gt;</code>

<code>&lt;</code><code>td</code> <code>align</code><code>=</code><code>"center"</code> <code>colspan</code><code>=</code><code>"5"</code><code>&gt;</code>

<code>&lt;</code><code>h2</code><code>&gt;所有圖書資訊&lt;/</code><code>h2</code><code>&gt;</code>

<code>&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>&lt;</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"#e1ffc1"</code> <code>&gt;</code>

<code>&lt;!--  &lt;td&gt;&lt;b&gt;ID&lt;/b&gt;&lt;/td&gt;--&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;圖書名稱&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;價格&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;數量&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;作者&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;修改數量&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>b</code><code>&gt;删 除&lt;/</code><code>b</code><code>&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>// 擷取圖書資訊集合</code>

<code>List&lt;</code><code>Book</code><code>&gt;list = (List&lt;</code><code>Book</code><code>&gt;)request.getAttribute("list");</code>

<code>// 判斷集合是否有效</code>

<code>if(list == null || list.size() &lt; </code><code>1</code><code>){</code>

<code>out.print("沒有資料!");</code>

<code>}else{</code>

<code>// 周遊圖書集合中的資料</code>

<code>for(Book book : list){</code>

<code>&lt;</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code> <code>bgcolor</code><code>=</code><code>"white"</code><code>&gt;</code>

<code>&lt;!--&lt;td&gt;&lt;%=book.getId()%&gt;&lt;/td&gt;--&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getName()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getPrice()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getbookCount()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;%=book.getAuthor()%&gt;&lt;/</code><code>td</code><code>&gt;</code>

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>"hidden"</code> <code>name</code><code>=</code><code>"id"</code> <code>value="&lt;%=book.getId()%&gt;"&gt;</code>

<code>&lt;</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>&gt;</code>

<code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>"submit"</code> <code>value</code><code>=</code><code>"修改"</code><code>&gt;</code>

<code>&lt;/</code><code>form</code><code>&gt;</code>

<code>&lt;</code><code>td</code><code>&gt;&lt;</code><code>a</code> <code>href="DeleteServlet?id=&lt;%=book.getId() %&gt;"&gt;删除&lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;/</code><code>table</code><code>&gt;</code>

<code>&lt;</code><code>br</code><code>&gt;</code>

<code>&lt;</code><code>center</code><code>&gt;</code>

<code>&lt;</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>&gt;</code>

<code> </code><code>&lt;</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>&gt;</code>

<code>&lt;/</code><code>form</code><code>&gt;&lt;/</code><code>center</code><code>&gt;</code>

将前面AddBook.jsp中的頁面連結進行修改

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"FindServlet"</code><code>&gt;傳回&lt;/</code><code>a</code><code>&gt;</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,如需轉載請自行聯系原作者