java 連接數據庫

這次想記錄一下用java實現與數據庫的連接並將數據進行顯示,效果開始界面如下

 

本應用採用MySQL 訪問數據庫,數據庫至包含一個 students 類,代碼如下

CREATE TABLE students(
	id serial NOT NULL,
	name character VARCHAR(10),
	age int,
	email VARCHAR(50),
CONSTRAINT pkey PRIMARY KEY(id)
);

Student 類作爲模式類,包含 4 個屬性: id, name, age 和 email 。

public class Student {

	private int id;//
	private String name;// varchar(10)
	private int age;// int
	private String email;// varchar(50)

	public void setId(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return age;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getEmail() {
		return email;
	}

}

BaseDao 類實現數據庫連接,StudentDao 接口定義了數據庫訪問方法,StudentDaoImpl 類是實現類,StudentServlet 是控制類。

BaseDao 類的代碼如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class BaseDao {
	public Connection getConnection() {

		// 相關參數的設置
		String username = "root";// 數據庫用戶名
		String password = "abcABC*710712";// 數據庫密碼
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/postgres";

		// 數據庫的連接
		try {
			Class.forName(driver);
			return DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public static void main(String[] args) {
		Connection dbconn = new BaseDao().getConnection();
		System.out.println(dbconn);
	}

}

StudentDao 接口的代碼如下:


import java.util.List;

public interface StudentDao {

	/**
	 * 添加學生信息
	 * @param s Student 對象
	 * @return 是否添加成功
	 */
	public boolean addStudent(Student s);
	/**
	 * 得到數據庫中所有學生的信息
	 * @return 所有學生信息
	 */
	public List<Student> listStudent();
	/**
	 * 根據id號刪除數據庫中的學生信息
	 * @param id 要刪除學生的id號
	 * @return 刪除學生的個數
	 */
	public int removeStudent(int id);
	
}

StudentDaoImpl 類的代碼如下:

package Experiment2;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl extends BaseDao implements StudentDao {

	Connection dbconn = getConnection();

	public boolean addStudent(Student s) {
		String sql = "insert into Students(name,age,email) values(?,?,?)";
		try {
			PreparedStatement pstmt = dbconn.prepareStatement(sql);
			pstmt.setString(1, s.getName());
			pstmt.setInt(2, s.getAge());
			pstmt.setString(3, s.getEmail());
			pstmt.executeUpdate();
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}

	}


	public List<Student> listStudent() {

		List<Student> list = new ArrayList<Student>();
		String sql = "select * from Students";
		try {
			PreparedStatement pstmt = dbconn.prepareStatement(sql);
			ResultSet rst = pstmt.executeQuery();
			while (rst.next()) {
				int id = rst.getInt("id");
				String name = rst.getString("name");
				int age = rst.getInt("age");
				String email = rst.getString("email");
				Student student = new Student(id, name, age, email);
				list.add(student);
			}
			return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}

	}


	public int removeStudent(int id) {

		String sql = "delete from Students where id=?";
		try {
			PreparedStatement pstmt = dbconn.prepareStatement(sql);
			pstmt.setInt(1, id);
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return 0;
		}

	}

}

StudentServlet 類是控制器,實現學生記錄的添加、顯示和刪除

package Experiment2;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StudentServlet extends HttpServlet {


	public StudentServlet() {
		super();
	}

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request,response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String action = request.getParameter("action");
		if(action!=null && action.equals("addStudent")){
			addStudent(request, response);
		}else if( action.equals("remove")){
			removeStudent(request, response);
		}else{
			listStudent(request, response);
		}
		
	}
	/**
	 * 添加學生信息
	 */
	public void addStudent(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
		
		String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");
		int age = Integer.parseInt(request.getParameter("age"));
		String email = new String(request.getParameter("email").getBytes("iso-8859-1"),"utf-8");
		Student s = new Student();
		s.setName(name);
		s.setAge(age);
		s.setEmail(email);
		
		StudentDao dao = new StudentDaoImpl();
		boolean success = dao.addStudent(s);
		
		if(success){
			String message = "插入記錄成功";
			request.setAttribute("msg", message);
			listStudent(request, response);
		}else{
			RequestDispatcher rd = request.getRequestDispatcher("ErrorPage.jsp");
			rd.forward(request, response);
		}
		
	}
	
	/**
	 * 刪除學生信息
	 */
	public void removeStudent(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
		
		int id = Integer.parseInt(request.getParameter("id"));
		StudentDao dao = new StudentDaoImpl();
		int success = dao.removeStudent(id);
		if(success>0){
			listStudent(request, response);
		}
	}
	
	/**
	 * 添加學生信息 
	 */
	public void listStudent(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
		
		StudentDao dao = new StudentDaoImpl();
		List<Student> list = dao.listStudent();
		request.setAttribute("studentList", list);
		RequestDispatcher rd = request.getRequestDispatcher("addStudent.jsp");
		rd.forward(request, response);
		
	}

	public void init() throws ServletException {
		// Put your code here
	}

}

addStudent.jsp 頁面用來顯示學生信息

v<!-- 展示學生信息 -->
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*,Experiment2.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html>
<head>
<title>添加學生信息</title>
</head>

<body>
	<form action="addStudent.do?action=addStudent" mathod="post">
		<p>請輸入學生信息</p>
		<p>${msg}</p>
		<p>
		<table>
			<tr><td>姓名</td><td><input type="text" name="name" value="王小明" /></td></tr>
			<tr><td>年齡</td><td><input type="text" name="age" value="20" /></td></tr>
			<tr><td>Email</td><td><input type="email" name="email"value="[email protected]" /></td></tr>
		</table>
		</p>
		<p><input type="submit" value="確定" /><input type="reset" value="重置" /></p>
	</form>
	<hr />
	<table>
		<tr><td>學號</td><td>姓名</td><td>年齡</td>
			<td>郵件地址</td><td>是否刪除</td>
		</tr>
		<c:forEach var="s" items="${studentList}">
			<tr>
				<td>${s.id}</td>
				<td>${s.name}</td>
				<td>${s.age}</td>
				<td>${s.email}</td>
				<td><a href="addStudent.do?action=remove&id=${s.id}">刪除</a></td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>

這個代碼的實現比較簡單,但是可以有很多其他的應用,所有這次就將它記錄下來。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章