1. 程式人生 > >java servlet jdbc 連線sqlserver資料庫查詢和修改

java servlet jdbc 連線sqlserver資料庫查詢和修改

效果圖:


2、Java類

package shop.hh;

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;
	}
}
package shop.hh;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
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;

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.microsoft.sqlserver.jdbc.SQLServerDriver");
			// 資料庫連線字串
			String url = "jdbc:sqlserver://DESKTOP-EO1BDL6;DatabaseName=hh";
			// 資料庫使用者名稱
			String username = "sa";
			// 資料庫密碼
			String password = "
[email protected]
"; // 建立Connection連線 Connection conn = DriverManager.getConnection(url, username, password); // 獲取Statement Statement stmt = conn.createStatement(); // 新增圖書資訊的SQL語句 String sql = "select * from tb_books"; // 執行查詢 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); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.valueOf(request.getParameter("id")); int bookCount=Integer.valueOf(request.getParameter("bookCount")); try { // 載入資料庫驅動,註冊到驅動管理器 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 資料庫連線字串 String url = "jdbc:sqlserver://DESKTOP-EO1BDL6;DatabaseName=hh"; // 資料庫使用者名稱 String username = "sa"; // 資料庫密碼 String password = "
[email protected]
"; Connection conn = DriverManager.getConnection(url, username, password); String sql="update tb_book set bookcount=? where id=?"; PreparedStatement ps=conn.prepareStatement(sql); ps.setInt(1, bookCount); ps.setInt(2, id); ps.executeUpdate(); ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } response.sendRedirect("FindServlet"); } }

package shop.hh;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
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;

public class UpdateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			// 載入資料庫驅動,註冊到驅動管理器
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			// 資料庫連線字串
			String url = "jdbc:sqlserver://DESKTOP-EO1BDL6;DatabaseName=hh";
			// 資料庫使用者名稱
			String username = "sa";
			// 資料庫密碼
			String password = "[email protected]";
			// 建立Connection連線
			Connection conn = DriverManager.getConnection(url, username, password);
			// 獲取Statement
			Statement stmt = conn.createStatement();
			// 新增圖書資訊的SQL語句
			String sql = "select * from tb_books";
			// 執行查詢
			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);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int id = Integer.valueOf(request.getParameter("id"));
		int bookCount=Integer.valueOf(request.getParameter("bookCount"));
		try {
			// 載入資料庫驅動,註冊到驅動管理器
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			// 資料庫連線字串
			String url = "jdbc:sqlserver://DESKTOP-EO1BDL6;DatabaseName=hh";
			// 資料庫使用者名稱
			String username = "sa";
			// 資料庫密碼
			String password = "[email protected]";
			Connection conn = DriverManager.getConnection(url, username, password);
			String sql="update tb_books set bookcount=? where id=?";
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setInt(1, bookCount);
			ps.setInt(2, id);
			ps.executeUpdate();
			ps.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		response.sendRedirect("FindServlet");
	}
}


3、 jsp頁面
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@page import="java.util.List"%>
<%@page import="shop.hh.Book"%>

<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<table align="center" width="450" border="1">
		<tr>
			<td align="center" colspan="5">
				<h2>所有圖書資訊</h2>
			</td>
		</tr>
		<tr align="center">
			<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">
						<td><%=book.getId() %></td>
						<td><%=book.getName() %></td>
						<td><%=book.getPrice() %></td>
						<td><%=book.getBookCount() %></td>
						<td><%=book.getAuthor() %></td>
						<td>
							<form action="UpdateServlet" method="post" onsubmit="return check(this);">
								<input type="hidden" name="id" value=<%=book.getId() %>>
								<input type="text" name="bookCount" size="3">
								<input type="submit" value="修 改">
							</form>
						</td>
					</tr>
					<%
				}
			}
		%>
	</table>
</body>
</html>


<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<a href="FindServlet">檢視所有圖書</a>
</body>
</html>

4、xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>11.3</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>FindServlet</display-name>
    <servlet-name>FindServlet</servlet-name>
    <servlet-class>shop.hh.FindServlet</servlet-class>  
    <display-name>UpdateServlet</display-name>
    <servlet-name>UpdateServlet</servlet-name>
    <servlet-class>shop.hh.UpdateServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FindServlet</servlet-name>
    <url-pattern>/FindServlet</url-pattern>
    <servlet-name>UpdateServlet</servlet-name>
    <url-pattern>/UpdateServlet</url-pattern>
  </servlet-mapping>
</web-app>

5、需要引用servlet包和sqljdbc包