1. 程式人生 > 資料庫 >基於JDBC進行資料庫的增刪改查

基於JDBC進行資料庫的增刪改查

package com.neusoft.dao.impl;

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

import com.neusoft.dao.EmpDao;
import com.neusoft.po.Emp;
import com.neusoft.util.CommonUtil;
import com.neusoft.util.DBUtil;

public class EmpDaoImpl implements EmpDao {// 實現類

	private Connection con = null;
	private PreparedStatement pst = null;
	private ResultSet rs = null;

	// 全查詢
	@Override
	public List<Emp> selectEmpAll() {
		List<Emp> list = new ArrayList<>();// 查詢多行,所以準備容器
		String sql = "select * from emp order by empno";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			rs = pst.executeQuery();
			while (rs.next()) {
				Emp emp = new Emp();
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setHireDate(rs.getString("hiredate"));
				emp.setSal(rs.getDouble("sal"));
				emp.setDeptno(rs.getInt("deptno"));
				list.add(emp);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(rs, pst, con);
		}
		return list;
	}

	// 根據ID查詢,返回受影響的
	public Emp selectEmpById(int empno) {
		Emp emp = null;
		String sql = "select * from emp where empno=?";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			pst.setInt(1, empno);
			rs = pst.executeQuery();
			if (rs.next()) {
				emp = new Emp();
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setHireDate(rs.getString("hiredate"));
				emp.setSal(rs.getDouble("sal"));
				emp.setDeptno(rs.getInt("deptno"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(rs, pst, con);
		}
		return emp;
	}

	// 新增,返回受影響的行數
	public int insertEmp(Emp emp) {
		int result = 0;
		String sql = "insert into emp values(null,?,?,?,?,?)";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			pst.setString(1, emp.getEname());
			pst.setString(2, emp.getJob());
			pst.setString(3, CommonUtil.getCurDate());// 獲取系統日期
			pst.setDouble(4, emp.getSal());
			pst.setInt(5, emp.getDeptno());
			result = pst.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(null, pst, con);
		}
		return result;
	}

	// 更新工資和職位
	public int updateEmp(Emp emp) {
		int result = 0;
		String sql = "update emp set job=?,sal=? where empno=?";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			pst.setString(1, emp.getJob());
			pst.setDouble(2, emp.getSal());
			pst.setInt(3, emp.getEmpno());
			result = pst.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(rs, pst, con);
		}
		return result;
	}

	// 刪除
	public int deleteEmpById(int empno) {
		int result = 0;
		String sql = "delete from emp where empno=?";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			pst.setInt(1, empno);
			result = pst.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(rs, pst, con);
		}
		return result;
	}
}
package com.neusoft.dao;

import java.util.List;

import com.neusoft.po.Emp;

public interface EmpDao {
	
	public List<Emp> selectEmpAll();//全查詢
	public Emp selectEmpById(int empno);//根據主鍵查詢
	public int insertEmp(Emp emp);//新增
	public int updateEmp(Emp emp);//修改
	public int deleteEmpById(int empno);//刪除
}
package com.neusoft.po;

public class Emp {// 實體類,和資料庫資料一一對應

	private Integer empno;
	private String ename;
	private String job;
	private String hireDate;
	private Double sal;
	private Integer deptno;

	@Override
	public String toString() {
		return this.empno + "\t" + this.ename + "\t" + this.job + "\t" + this.hireDate + "\t" + this.sal + "\t"
				+ this.deptno;
	}

	public Integer getEmpno() {
		return empno;
	}

	public void setEmpno(Integer empno) {
		this.empno = empno;
	}

	public String getEname() {
		return ename;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

	public String getHireDate() {
		return hireDate;
	}

	public void setHireDate(String hireDate) {
		this.hireDate = hireDate;
	}

	public Double getSal() {
		return sal;
	}

	public void setSal(Double sal) {
		this.sal = sal;
	}

	public Integer getDeptno() {
		return deptno;
	}

	public void setDeptno(Integer deptno) {
		this.deptno = deptno;
	}

}
package com.neusoft.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class CommonUtil {// 共通的非JDBC的工具類類

	// 獲取系統日期
	public static String getCurDate() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(new Date());
	}
}
package com.neusoft.util;

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

public class DBUtil {

	private static final String URL = "jdbc:mysql://localhost:3306/emp?characterEncoding=utf-8";
	private static final String DRIVER = "com.mysql.jdbc.Driver";
	private static final String USERNAME = "root";
	private static final String PASSWORD = "root";

	// 獲取Connection連線
	public static Connection getConnection() {
		Connection con = null;
		try {
			Class.forName(DRIVER);
			con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}

	// 關閉資源
	public static void closeAll(ResultSet rs, PreparedStatement pst, Connection con) {
		try {
			if (rs != null) {
				rs.close();
			}
			if (pst != null) {
				pst.close();
			}
			if (con != null) {
				con.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
package com.neusoft;

import java.util.List;

import com.neusoft.dao.EmpDao;
import com.neusoft.dao.impl.EmpDaoImpl;
import com.neusoft.po.Emp;

public class Test {

	public static void main(String[] args) {
	    EmpDao dao = new EmpDaoImpl();
	    //全查詢
	    /*
	    List<Emp> list = dao.selectEmpAll();
	    if(list.size()==0){
	    	System.out.println("沒有資料");
	    }
	    for(Emp emp : list){
	    	System.out.println(emp);
	    }
	    */
	    /*
	    //根據主鍵查詢
	    Emp emp = dao.selectEmpById(10);
	    if(emp!=null){
	    	System.out.println(emp);
	    }else{
	    	System.out.println("查無此人");
	    }  
	    */
	    /*
	    Emp emp = new Emp();
	    emp.setEname("習大大");
	    emp.setJob("國家主席");
	    emp.setSal(9000.32);
	    emp.setDeptno(10);
	    int result = dao.insertEmp(emp);
	    if(result>0){
	       System.out.println("新增成功");
	    }else{
	    	System.out.println("新增失敗");
	    }
	   */
	   /*
	    Emp emp = new Emp();
	    emp.setEmpno(75);
	    emp.setJob("國家主席1");
	    emp.setSal(9000.33);
	    int result = dao.updateEmp(emp);
	    if(result>0){
	       System.out.println("更新成功");
	    }else{
	    	System.out.println("更新失敗");
	    }
	    */
	    
	    int result = dao.deleteEmpById(75);
	    if(result>0){
		       System.out.println("刪除成功");
		}else{
		    	System.out.println("刪除失敗");
		}
		
	}
}

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述