JAVA DAY23 - JDBC

어뮤즈온·2021년 1월 11일
0

초급자바

목록 보기
31/31
post-custom-banner

JDBC 작성 단계

  1. Connection 생성
  2. Statement 생성(쿼리)
  3. Query 실행
  4. ResultSet에서 결과 추출(select인 경우)
  5. ResultSet, Statement, Connection 닫기

SELECT 문

//데이터베이스 접속 정보
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "계정명";
String password = "java";

Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;

//기본 세팅
con = DriverManager.getConnection(url, user, password);
//컴파일에러 -> try-catch

try {
	con = DriverManager.getConnection(url, user, password);
			
	String sql = "select * from member";
	ps = con.prepareStatement(sql);
			
	//select
	rs = ps.executeQuery(); 
			
	//insert, update, delete
 	//int result = ps.executeUpdate(); //영향받은 행(row)의 수를 리턴
			
	while(rs.next()){//rs의 다음행이 있는지 없는지 확인하는 메서드
		String memId = rs.getString(1); //인덱스로 값을 가져오기(인덱스는 1부터 시작)
		String memPass = rs.getString("MEM_PASS"); //컬럼명으로 값을 가져오기
		System.out.println("MEM_ID : " + memId + " / MEM_PASS : " + memPass);
	}
			
	String sql2 = "select * from departments";
	ps = con.prepareStatement(sql2);
			
	rs = ps.executeQuery();
			
	while(rs.next()){ //다음 행이 있을때까지 실행
		int deptId = rs.getInt(1);
		String deptName = rs.getString(2);
		int parentId = rs.getInt(3);
		int managerId = rs.getInt(4);
		Date createDate = rs.getDate(5);
		Date updateDate = rs.getDate(6);
		System.out.println("DEPARTMENT_ID :" + deptId + " / DEPARTMENT_NAME : " + deptName 
						            +  " / PARENT_ID : " + parentId + " / MANAGER_ID : " + managerId
						            + " / CREATE_DATE : " + createDate + " / UPDATE_DATE : " + updateDate);
		System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------");
	}
} catch (SQLException e) {
	e.printStackTrace();
}finally{
	if(rs != null) try { rs.close(); } catch(Exception e) {}
	if(ps != null) try { ps.close(); } catch(Exception e) {}
	if(con != null) try { con.close(); } catch(Exception e) {}
   	//open한 순서 반대로 close
	}
}

메타데이터 : 데이터에 대한 데이터

한 행의 여러 컬럼을 불러올 때 for문을 돌려서 불러올 수 있다.

try {
	con = DriverManager.getConnection(url, user, password);
					
	String sql = "select * from member where mem_id = ?";
	ps = con.prepareStatement(sql);
	ps.setString(1, "a001"); //?의 인덱스, 넣을 값
//	ps.setInt(parameterIndex, x);
//	ps.setObject(parameterIndex, x);
					
	rs = ps.executeQuery(); 
					
//	rs.getMetaData(); //메타데이터 : 데이터에 대한 데이터 ctr + 1 -> local variable
//      ↓
	ResultSetMetaData md = rs.getMetaData(); //메타데이터 : 데이터에 대한 데이터
					
	int columnCount = md.getColumnCount();//컬럼 갯수

	String result = md.getColumnName(1);//컬럼 이름
	System.out.println(result); //1번 컬럼인 mem_id 출력
					
	while(rs.next()){ //row의 값은 while이 확인
		for(int i = 1; i <= columnCount; i++){
			System.out.print(rs.getObject(i) + "\t");
		}
		System.out.println();
	}
} catch (SQLException e) {
		e.printStackTrace();
}finally{
	if(rs != null) try { rs.close(); } catch(Exception e) {}
	if(ps != null) try { ps.close(); } catch(Exception e) {}
	if(con != null) try { con.close(); } catch(Exception e) {}
}

INSERT, UPDATE, DELETE 문

try {
	con = DriverManager.getConnection(url, user, password);
					
	String sql = "insert into lprod values(?, ?, ?)";
	ps = con.prepareStatement(sql);
					
	ps.setInt(1, 11);
	ps.setString(2, "P601");
	ps.setString(3, "식품"); //?에 들어갈 데이터
					
	int result = ps.executeUpdate();
	System.out.println("영향받은 행의 수 : " + result);
					
} catch (SQLException e) {
	e.printStackTrace();
}finally{
	if(rs != null) try { rs.close(); } catch(Exception e) {}
	if(ps != null) try { ps.close(); } catch(Exception e) {}
	if(con != null) try { con.close(); } catch(Exception e) {}
}
profile
Hello, world!
post-custom-banner

0개의 댓글