본문 바로가기
IT/Java

자바 JDBC로 CRUD 해보기

by flatsun 2019. 5. 13.
반응형

JDBC는 데이터베이스를 자바에 연결해 사용하는 것인데

대부분이 오라클을 사용하는 만큼 오라클을 사용해 CRUD를 수행해 보자

 

오라클을 어떻게 자바에 연결하는지 모르겠다면

아래 글을 따라하면 된다

 

 

자바 JDBC 연결해 출력하기

일단 자바에 JDBC를 연결하기 전에 오라클이 설치되어 있어야 하는데 오라클은 이렇게 까세요! 하고 링크를 딱 깔아주면 좋겠지만 안타깝게도 오라클 다시 깔기가 귀찮아서 구글에 오라클 설치방법을 검색하면 글..

flatsun.tistory.com

일단 CREATE TABLE로 미리 테이블을 만들어 사용하자

비겁하게 보일 수도 있겠지만 CREATE TABLE을 자바에서 해 버리면

출력할 때마다 테이블을 만드는 것이 되는데

 

그걸 없앨라고 DROP을 같이 해버리면 대체 테이블이 뭔 의미인가

 

이래서 테이블은 미리 만들어 놔야 하고

다음으로는 INSERT, SELECT, DELETE 순으로 넘어간다 

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ConnectionTest {

    public static void main(String[] args) {
    	
    	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");	// 드라이버 로딩
		System.out.println("드라이버 로딩 성공..");

		String sql = "INSERT INTO TEST_TABLE VALUES('하하', 123) ";	// INSERT Query
		String sql2 = "SELECT * FROM  TEST_TABLE ";	// SELECT Query
		String sql3 = "DELETE FROM TEST_TABLE ";	// DELETE Query
	    	String url = "jdbc:oracle:thin:localhost:1521:SID";
	    	String id = "scott";	// 접속 ID
	    	String pass = "tiger";	// 접속 PW
    	
    		Connection conn = DriverManager.getConnection(url,id,pass);	// 드라이버 접속
		System.out.println("드라이버 접속 성공!");
			
		Statement stmt =  conn.createStatement();
		stmt.executeQuery(sql); // INSERT
		ResultSet rs =   stmt.executeQuery(sql2); // SELECT 한 내용 RS에 넣기
			
		while(rs.next()) { // ResultSet에 다음 값이 없을때까지 출력
			String name = rs.getString("NAME");	// 컬럼 값 받아오기
			int val = rs.getInt("VAL");
			System.out.println("NAME : " + name + " VAL : " + val);
		}
			
		stmt.executeQuery(sql3); // DELETE
			
		// 연결 끊기
		rs.close();
		stmt.close();
		conn.close();
			
    	} catch (Exception e) {
		e.printStackTrace();
	}
    }

}

보면 비겁하게 저번에 사용한 내용에서 INSERT와 DELETE만 추가한 것이 보이는데

 

미리 쿼리문을 String에 담아 둔 다음에

Statement를 사용해 쿼리를 수행한다

stmt.execute(sql) 을 사용하면 아까 위에 정의해둔 쿼리를 수행하게 되는 것이다

 

보면 INSERT 쿼리 수행 후

SELECT 쿼리를 수행해서 그 결과를 ResultSet 안에 담고

while(rs.next) {

}

를 통해서 조회한 쿼리를 모두 뽑아낸 다음

 

DELETE 쿼리를 수행해서 아까 추가한 내용을 지운다

DELETE가 없으면 계속 한줄씩 추가되니까..

 

위 링크에 있는 내용이라 쓰지 말까 했는데

JDBC는 

 

1. Class.forName("oracle.jdbc.driver.OracleDriver");

로 드라이버를 로딩하고

 

2. Connection conn = DriverManager.getConnection(url,id,pass);

로 드라이버에 접속하고

 

3. Statement stmt =  conn.createStatement();

접속한 정보를 Statement에 담아서 stmt를 통해 쿼리를 수행할 수 있게 하고

 

4. stmt.executeQuery(sql);

이런 식으로 쿼리를 수행한다

 

5. 출력 시에는 ResultSet 안에 수행한 쿼리 내용을 담아준 뒤, while(rs.next()) {} 로 뽑아준다

while을 사용하는 이유는 SELECT 시 결과가 한 줄만 나오는 경우는 거의 없기 때문..

 

6. JDBC 사용 시 Connection, Statement, ResultSet 순으로 사용하는데

종료 시에는 역순으로 ResultSet, Statement, Connection 순으로 .close() 해 주면 된다

반응형

댓글