알고보면코딩천재

INSERT, DELETE, 본문

카테고리 없음

INSERT, DELETE,

알코천 2022. 8. 16. 15:52
StringBuilder sql = new StringBuilder();
			sql.append("INSERT INTO emp "); // 띄어쓰기 꼭 해줘야한다
			sql.append("VALUES()");

String은 Builder로 쌓는게 가독성이 좋다.

 

 

// Data, Access, Object
public class EmpDao {
	
	public int 직원추가(Emp emp) {
		int result = -1;
		try {
			// 1.SQL 작성
			StringBuilder sql = new StringBuilder();
			sql.append("INSERT INTO emp "); // 띄어쓰기 꼭 해줘야한다
			sql.append("VALUES(?,?,?,?,sysdate,?,?,?)"); 
			
			// 2. DB세션
			Connection conn = DBConnection.connection();
			
			// 3. 문장 완성
			PreparedStatement pstmt = conn.prepareStatement(sql.toString());
			// 물음표 번호는 1부터 시작!!
			pstmt.setInt(1, emp.getEmpno());
			pstmt.setString(2, emp.getEname());
			pstmt.setString(3, emp.getJob());
			pstmt.setInt(4, emp.getMgr());
			pstmt.setInt(5, emp.getSal());
			pstmt.setInt(6, emp.getComm());
			pstmt.setInt(7, emp.getDeptno());
			
			// 4. 문장 전송
			result = pstmt.executeUpdate(); // 문장전송, commit
			
			// result = 1 행 하나 변경, 0 변경 안됨, -1 오류
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

int result = -1; 로 초기화

executeUpdate(); 문장전송, commit

executeQuery(); select에서만 쓴다 commit이 안되니까.

 

 

엔티티 설계도

테이블이랑 같은 상태 만들어놓고

setter getter 만들고

필요한 생성자(초기화를 위한 생성자-필요한것만 적음), 디폴트 생성자

package db;

import java.sql.Timestamp;

// 엔티티
public class Emp {
	private int empno;
	private String ename;
	private String job;
	private int mgr;
	private Timestamp hiredate;
	private int sal;
	private int comm;
	private int deptno;
	
	public Emp() {
		// TODO Auto-generated constructor stub
	}

	public Emp(int empno, String ename, String job, int mgr, int sal, int comm, int deptno) {
		super();
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
	}

	public int getEmpno() {
		return empno;
	}

	public void setEmpno(int 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 int getMgr() {
		return mgr;
	}

	public void setMgr(int mgr) {
		this.mgr = mgr;
	}

	public Timestamp getHiredate() {
		return hiredate;
	}

	public void setHiredate(Timestamp hiredate) {
		this.hiredate = hiredate;
	}

	public int getSal() {
		return sal;
	}

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

	public int getComm() {
		return comm;
	}

	public void setComm(int comm) {
		this.comm = comm;
	}

	public int getDeptno() {
		return deptno;
	}

	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
}
package db;

import java.util.ArrayList;

public class EmpApp {
	public static void main(String[] args) {
		EmpDao empDao = new EmpDao();
		ArrayList<Emp> emps = empDao.직원목록보기();
//		Emp emp = empDao.직원한건보기(7369);
//		System.out.println(emp.getEname());
		Emp emp = new Emp(
				7777,
				"metacoding",
				"MANAGER",
				7369,
				500,
				0,
				10
				); // 생성자 초기화
		empDao.직원추가(null);
	}
}

 

 

직원삭제 메서드 추가

public int 직원삭제(int empno) { 
		int result = -1;
		try {
			// 1.SQL 작성
			StringBuilder sql = new StringBuilder();
			sql.append("DELETE FROM EMP WHERE empno = ?"); // 띄어쓰기 꼭 해줘야한다
			
			// 2. DB세션
			Connection conn = DBConnection.connection();
			
			// 3. 문장 완성
			PreparedStatement pstmt = conn.prepareStatement(sql.toString());
			// 물음표 번호는 1부터 시작!!
			pstmt.setInt(1, empno);

			
			// 4. 문장 전송
			result = pstmt.executeUpdate(); // 문장전송, commit
		
			
			// result = 1 행 하나 변경, 0 변경 안됨, -1 오류
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
package db;

import java.util.ArrayList;

public class EmpApp {
	public static void main(String[] args) {
		EmpDao empDao = new EmpDao();
	
		int result = empDao.직원삭제(7839);
		System.out.println(result);

	}
}

1 출력ㅓ된다구

Comments