알고보면코딩천재

JavaDB통신 Entity, ArrayList 본문

Java

JavaDB통신 Entity, ArrayList

알코천 2022. 8. 16. 12:52

디버깅

첫줄에 전체적인 오류 확인

내가 쓴 클래스만 보면 된다.

 

System.out.println(1);

1. log 넣어주면 오류 어디서 터졌는지 알 수 있다

2. 디버그

 

on premese

on demend

프로비저닝 세팅

프로비저닝(provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다.

 

catch (Exception e) {
				e.printStackTrace();

StackTrace();오류 잡기

 

 

 

SELECT * FROM EMP;

1. 행(EMPNO, ENAME, JOB,,,,) (클래스)

int , String, String int, int, int, int ->클래스 옮기기(Entity)

Entity 테이블 이름과 똑같이 만든다

private 상태

 

 

 

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 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.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SelectAndPush {

	static void send() {

	}

	static Connection connection() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");

			return conn;

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		try {
			// 1.디비연결
			Connection conn = connection();

			// 2.문장완성
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");

			// 3.문장정송
			ResultSet rs = pstmt.executeQuery();

			// 4.커서 false 때까지 내리기
			while (rs.next()) { // 14바퀴
				Emp emp = new Emp(); 
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

 

 

바이트 통신이니까 모든것은 String으로 받을 수 있다.

DB에 있는거 가져와서 java에 데이터로 담고

 

 

{} 스택

커서는 한번 내려가면 못올라가서 데이터 날아간다. 그래서 담는다

 

 

2.행 14줄 ArrayList에 차곡 차곡 담기 =(table)

ArrayList<Emp> emps = new ArrayList<>();
while (rs.next()) { // 14바퀴
				Emp emp = new Emp(); 
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
				emps.add(emp);
			}

최종적으로 담겨야할 데이터는 최상단에 올려야한다.

 

// 데이터 확인하기
		int size = emps.size();
		for (int i = 0; i < size; i++) {
			System.out.println(emps.get(i).getEname());
			
		}

send(); 호출

package db;

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

public class SelectAndPush {

	// 통신은 하지 않지만, 통신을 한다고 가정하고 
	static void send(ArrayList<Emp> datas) {
		// 내부는 안적음.

	}

	static Connection connection() { // 똑똑
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");

			return conn;

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		
		ArrayList<Emp> emps = new ArrayList<>();
		
		try {
			// 1.디비연결
			Connection conn = connection();

			// 2.문장완성
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");

			// 3.문장정송
			ResultSet rs = pstmt.executeQuery();

			// 4.커서 false 때까지 내리기
			while (rs.next()) { // 14바퀴
				Emp emp = new Emp(); 
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
				emps.add(emp);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		// 데이터 확인하기
		int size = emps.size();
		for (int i = 0; i < size; i++) {
			System.out.println(emps.get(i).getEname());
			
		}
		
		// 데이터 전송하기
		send(emps);
	}

}

코드 리팩토링

 

1.EmpDao.java

2. DBConnection.java 

3. EmpApp.java 

만들기

package db;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {
	// public이 붙어야 다른 패키지에서 import 가능
	public static Connection connection() { // 똑똑
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");

			return conn;

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}
package db;

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

// Data, Access, Object
public class EmpDao {

	public ArrayList<Emp> 직원목록보기() {
		ArrayList<Emp> emps = new ArrayList<>();

		try {
			Connection conn = DBConnection.connection();
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");
			ResultSet rs = pstmt.executeQuery();
			while (rs.next()) {
				Emp emp = new Emp();
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
				emps.add(emp);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return emps;
	} // end of 직원목록보기
	

	}
}
package db;

import java.util.ArrayList;

public class EmpApp {
	public static void main(String[] args) {
		EmpDao empDao = new EmpDao();
		ArrayList<Emp> emps = empDao.직원목록보기();
	}
}

실습 

직원한건보기라는 매서드를 만들어서

empno가 7369인 직원 이름을 출력하여라.

package db;

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

// Data, Access, Object
public class EmpDao {

	public ArrayList<Emp> 직원목록보기() {
		ArrayList<Emp> emps = new ArrayList<>();

		try {
			Connection conn = DBConnection.connection();
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");
			ResultSet rs = pstmt.executeQuery();
			while (rs.next()) {
				Emp emp = new Emp();
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
				emps.add(emp);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return emps;
	} // end of 직원목록보기
	
	public Emp 직원한건보기(int empno) {
		Emp emp = new Emp();
		try {
			Connection conn = DBConnection.connection();
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp WHERE empno="+empno);
			ResultSet rs = pstmt.executeQuery();
			
			if(rs.next()) {
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		return emp;
	}
}

 

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());
	}
}

PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp WHERE empno="+empno);

 

 

 

'Java' 카테고리의 다른 글

Service  (0) 2022.08.17
UPDATE  (0) 2022.08.16
Java DB 통신  (0) 2022.08.12
오라클 다운로드  (0) 2022.08.08
제네릭 클래스  (0) 2022.08.08
Comments