27일차 시작....

조동현·2022년 8월 8일
0

[교육] Java

목록 보기
11/12
post-thumbnail

📌 ojdbc 넣는 방법

1. 프로젝트 파일에서 build path -> configure build path
2. Libraries -> Modulepath -> Add External JARs
3. ojdbc.jar 파일 선택 -> Apply



📌 DAO (Data Access Object)

  • 데이터 접근 객체
    - 데이터 조회 메소드
    - 데이터 입력 메소드
    - 데이터 수정 메소드
    - 데이터 삭제 메소드


📌 Oracle DB 연결

  • DB 연결 방법
    1. Oracle DB Driver 로딩
    2. DB 경로(ip주소:port번호:db이름) 지정
    3. DriverManager의 getConnection(url, "계정명", "계정비밀번호") 호출하여 conn에 저장
Connection conn = null;

try {
	// Oracle DB Driver 로딩
	Class.forName("oracle.jdbc.driver.OracleDriver");
	// DB 경로 지정
	String url = "jdbc:oracle:thin:@localhost:1521:xe";
	// DriverManager과 DB 연결
	conn = DriverManager.getConnection(url, "scott", "tiger");
	System.out.println("DB 연결 성공");
} catch(Exception e) {
	e.printStackTrace();
}

return conn;


📌 DB 조회

  • SELECT
    - PreparedStatement 객체 : query를 준비하고 실행하는 객체
    - ResultSet 객체 : query 실행으로부터 얻은 데이터를 받는 객체

  • 단계
    1. DB와 연결된 conn 준비
    2. query 준비
    3. conn.prepareStatement(query)로 query를 준비하여 ps에 저장
    4. ps.executeQuery()로 query를 실행하고 나온 결과를 rs에 저장
    5. rs.next()를 통해 cursor를 이동시켜 반복문 실행
    6. rs.getInt(칼럼명) or rs.getString(칼럼명)을 이용해 데이터 추출
conn = new DBConnect().getConn();
query = "SELECT * FROM member"
		+ " ORDER BY num ASC";
ps = conn.prepareStatement(query);
rs = ps.executeQuery();

while(rs.next()) {
	MemberDto mem = new MemberDto();
	
	int num = rs.getInt("num");
	String name = rs.getString("name");
	String addr = rs.getString("address");
	
	mem.setNum(num);
	mem.setName(name);
	mem.setAddr(addr);
	
	memList.add(mem);
}


📌 DB 데이터 입력, 수정, 삭제

  • Insert, Update, Delete
    - PreparedStatement 객체 : query를 준비하고 세팅하고 실행하는 객체

  • 단계
    1. DB와 연결된 conn 준비
    2. query 준비
    3. conn.prepareStatement(query)로 query를 준비하여 ps에 저장
    4. ps.setInt(index, value) or ps.setString(index, value)으로 query문을 세팅함
    5. ps.executeUpdate()로 query를 실행하고 나온 결과인 정수값을 저장
    6. 쿼리문이 성공하면 정수값은 1 이상의 값을 갖음(실패는 0 값을 갖음)
    7. 해당 값에 따라 실패 또는 성공 메시지를 출력
try {
	conn = new DBConnect().getConn();
	// INSERT문 작성
	query = "INSERT INTO member"
			+ " (num, name, address)"
			+ " VALUES(member_seq.NEXTVAL, ?, ?)";
	// query를 준비
	ps = conn.prepareStatement(query);
	// query 세팅 후 완성
	ps.setString(1, mem.getName());
	ps.setString(2, mem.getAddr());
	
	// query 실행
	numSuccess = ps.executeUpdate();
} catch(Exception e) {
	e.printStackTrace();
} finally {
	try {
		if(ps!=null) ps.close();
		if(conn!=null) conn.close();
	} catch(Exception e) {
		e.printStackTrace();
	}
}

if(numSuccess > 0) {
	return true;
} else {
	return false;
}


profile
데이터 사이언티스트를 목표로 하는 개발자

0개의 댓글