- 자바와 데이터베이스를 연결해주는 라이브러리
- ojdbc : 오라클 JDBC
1. Connection 생성(DB연결): 오라클과 자바 연결 2. Statement 생성(쿼리 작성): 실행 결과가 자바로 넘어옴 3. Query 실행 4. ResultSet에서 결과 추출(select인 경우) 5. ResultSet, Statement, Connection 닫기
package k_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBC {
public static void main(String[] args) {
//데이터베이스 접속 정보 만들기
String url = "jdbc:oracle:thin:@localhost:1521:xe";
//드라이버(서로 다른 애들을 연결하는 중간다리)이름 정보@접속 주소(로컬호스트:포트:sld)
String user = "JSG99";
String password = "java";
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = DriverManager.getConnection(url, user, password);
String sql = "select * from member"; //select 쿼리
ps = con.prepareStatement(sql);
//ps에 쿼리에 대한 정보가 담겨있음
rs = ps.executeQuery();
//쿼리 실행2:insert, update, delete -- int 리턴 받음
int result = ps.executeUpdate(); // 영향 받은 행의 개수를 리턴
while(rs.next()) {
//next()를 호출하면 첫번쩨 행을 바라봄 그게 반복되면 2,3행을 바라봄
: 다음 행이 있는지 없는지를 보면서 알려줌(다음행이 있으면 true, 없으면 false)
String memId = rs.getString(1);
//getString: 가져올 값의 타입을 정의하는 것 / (1): 첫번째 컬럼
String memPass = rs.getString("MEM_PASS");//("MEM_PASS"): 컬럼명
System.out.println("MEM_ID: "+memId+" / MEM_PASS: "+memPass);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//DriverManager : 드라이버 관리 클래스에 getConnection메서드 호출
}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) {}
}
}
}
package k_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class JDBC2 {
public static void main(String[] args) {
// 작성 예
// 데이터베이스 접속 정보 3가지가 필요
String url = "jdbc:oracle:thin:@localhost:1521:xe";
// 골뱅이 앞 부분은 드라이버 뒤는 오라클의 호스트이름 포트 SID 를 차례대로 입력
String user = "JSG99";
String password = "java";
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
// 변수 만들고 드라이브 를 관리해주는 드라이브매니저와 겟 커넥션 메소드 사용해서 커넥션 값 받기
try {
con = DriverManager.getConnection(url, user, password);
String sql = "select * from cart where cart_member = ? and cart_qty > ?";
// 보통 where 절에는 값이 와야하는데 ? 를 사용하면 ?에 동적으로 값만 넣어줄 수 있음.
ps = con.prepareStatement(sql);
ps.setString(1, "a001");
// 첫번째 물음표에 a001 이라는 값을 넣겠다는 뜻.
ps.setInt(2, 5);
// 두번째 물음표에는 5라는 int 값을 넣겠다.
// ps.setObject(3, 10); 타입에 상관없이 ? 에 값을 넣어 줄 수 있음.
rs = ps.executeQuery();
** // 뽑아올 컬럼의 개수 알아오기/**
ResultSetMetaData metaData = rs.getMetaData(); // 메타데이터 : 데이터에 대한 데이터
int columnCount = metaData.getColumnCount(); // 컬럼의 수
while(rs.next()){
for(int i = 1; i <= columnCount; i++){
Object value = rs.getObject(i);
System.out.print(value + "\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) {}
}
}}