jdbc查詢資料庫中資料
阿新 • • 發佈:2019-02-16
接著上一篇在資料庫中新增資料
介紹通過JDBC查詢資料,主要通過Resultset物件來載入查詢結果集。
ResultSet物件是JDBC API中封裝的結果集物件,從資料表中查詢資料均放置在這個集合中
建立WEB專案,通過JDBC查詢圖書資訊表中的圖書資訊並且顯示在JSP中
1)建立名為“Book”的類,用於封裝圖書資訊:
package com.xhd.bean; /** * * @author Administrator * */ public class Book { private int id; private String name; private double price; private int bookCount; private String author; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getBookCount() { return bookCount; } public void setBookCount(int bookCount) { this.bookCount = bookCount; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
2)建立名為"FirstServlet"的Servlet物件,用於查詢所有圖書資訊。
在其中編寫doGet()方法建立資料庫連線。
並將查詢的資料集合放置到HttpServlet物件中,將請求轉發到JSP頁面
由於查詢圖書資訊的SQL語句中並不需要引數資訊,使用statement物件執行查詢。package com.xhd.bean; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 查詢圖書資訊的Servlet物件 * @author * */ public class FindServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 載入資料庫驅動,註冊到驅動管理器 Class.forName("com.mysql.jdbc.Driver"); // 資料庫連線字串 String url = "jdbc:mysql://localhost:3306/db_database11"; // 資料庫使用者名稱 String username = "root"; // 資料庫密碼 String password = "111"; // 建立Connection連線 Connection conn = DriverManager.getConnection(url,username,password); // 獲取Statement Statement stmt = conn.createStatement(); // 新增圖書資訊的SQL語句 String sql = "select * from tb_book"; // 執行查詢 ResultSet rs = stmt.executeQuery(sql); // 例項化List物件 List<Book> list = new ArrayList<Book>(); // 判斷游標向後移動,並判斷是否有效 while(rs.next()){ // 例項化Book物件 Book book = new Book(); // 對id屬性賦值 book.setId(rs.getInt("id")); // 對name屬性賦值 book.setName(rs.getString("name")); // 對price屬性賦值 book.setPrice(rs.getDouble("price")); // 對bookCount屬性賦值 book.setBookCount(rs.getInt("bookCount")); // 對author屬性賦值 book.setAuthor(rs.getString("author")); // 將圖書物件新增到集合中 list.add(book); } // 將圖書集合放置到request之中 request.setAttribute("list", list); rs.close(); // 關閉ResultSet stmt.close(); // 關閉Statement conn.close(); // 關閉Connection } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } // 請求轉發到book_list.jsp request.getRequestDispatcher("book_list.jsp").forward(request, response); } }
在doGet()方法中首先獲取資料庫的連線Connection,
然後通過Statement物件執行查詢圖書資訊的select語句,並獲取resultset結果集
最後遍歷resultset中的資料來封裝圖書物件Book,將其新增到list集合中,轉發jsp頁面顯示
獲取Resultset物件後,即可通過移動游標定位到查詢結果中的指定行,然後通過resultset物件提供的一系列getXXX()方法來獲取當前行的資料。
3)建立book_list.jsp頁面,顯示圖書資訊
<%@ 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"> td{font-size: 12px;} h2{margin: 0px} </style> </head> <body> <table align="center" width="450" border="1" height="180" bordercolor="white" bgcolor="black" cellpadding="1" cellspacing="1"> <tr bgcolor="white"> <td align="center" colspan="5"> <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> </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> </tr> <% } } %> </table> </body> </html>
4)建立index.jsp頁面作為主頁
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>檢視所有圖書</title>
</head>
<body>
<a href="FindServlet">檢視所有圖書</a>
</body>
</html>