java 连接数据库

这次想记录一下用java实现与数据库的连接并将数据进行显示,效果开始界面如下

java 连接数据库_第1张图片

 

本应用采用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"%>



添加学生信息



	

请输入学生信息

${msg}

姓名
年龄
Email


学号姓名年龄 邮件地址是否删除
${s.id} ${s.name} ${s.age} ${s.email} 删除

这个代码的实现比较简单,但是可以有很多其他的应用,所有这次就将它记录下来。

 

 

 

 

你可能感兴趣的:(Java编码笔记)