这次想记录一下用java实现与数据库的连接并将数据进行显示,效果开始界面如下
本应用采用MySQL 访问数据库,数据库至包含一个 students 类,代码如下(连接数据库一定要记得引入连接相关的 jar 包)
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 = "***********";// 数据库密码
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/postgres";//我的数据库名为 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 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 listStudent() {
List list = new ArrayList();
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 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"%>
添加学生信息
学号 姓名 年龄
邮件地址 是否删除
${s.id}
${s.name}
${s.age}
${s.email}
删除
这个代码的实现比较简单,但是可以有很多其他的应用,所有这次就将它记录下来。