1. 程式人生 > >jdbc查詢資料庫中資料

jdbc查詢資料庫中資料

接著上一篇在資料庫中新增資料

介紹通過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頁面

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);
	}
}
由於查詢圖書資訊的SQL語句中並不需要引數資訊,使用statement物件執行查詢。

在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>