//데이터베이스 접속 정보
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) {}
}
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) {}
}