알고보면코딩천재
INSERT, DELETE, 본문
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