728x90
반응형
1. Connection Interface
: 데이터베이스에 접속하기 위한 인터페이스.
Connection 객체를 얻기 위해서는 DriverManager 클래스의 getConnection()를 호출해야 한다.
예)
Class.forName("oralce.jdbc.driver.OracleDriver"); // 데이터베이스 드라이버를 메모리에 로딩String url="jdbc:oracle:thin:@localhost:1521:orcl"; //데이터베이스의 위치
String id="scott"; String pw="tiger"; //유저 아이디와 비밀번호
Connection conn=DriverManager.getConnection(url,id,pw);
2. Statement Interface
: SQL문을 실행하고 그 결과를 리턴받기 위한 인터페이스다.
: 데이터베이스에 접속하기 위한 인터페이스.
Connection 객체를 얻기 위해서는 DriverManager 클래스의 getConnection()를 호출해야 한다.
예)
Class.forName("oralce.jdbc.driver.OracleDriver"); // 데이터베이스 드라이버를 메모리에 로딩String url="jdbc:oracle:thin:@localhost:1521:orcl"; //데이터베이스의 위치
String id="scott"; String pw="tiger"; //유저 아이디와 비밀번호
Connection conn=DriverManager.getConnection(url,id,pw);
2. Statement Interface
: SQL문을 실행하고 그 결과를 리턴받기 위한 인터페이스다.
Statement 객체를 얻기 위해서는 Connection 객체의 createStatement()를 호출해야 한다.
실행 메서드는 executeQuery(), executeUpdate() 두 개의 메서드가 있다.
executeQuery() ==> select 문을 이용해서 ResultSet 객체를 받아올 때 실행한다.
executeUpdate()==> select 문을 제와한 SQL명령문을 실행한다.
예)
Statement stmt=conn.createStatement(); // Statement 객체 생성
String sql="create table member(id varchar2(20), pw varchar2(20))";
stmt.executeUpdate(sql); //SQL문 수행
3. ResultSet Interface
: exectueQuery()메서드의 SQL문이 실행된 결과의 데이터를 받기 위한 인터페이스.
ResultSet은 최초 테이블의 텃 행에 커서를 유지하는 기능이 있다.
next() 메서드를 사용하면 다음 행으로 커서를 이동하고, 더 이상의 데이터가 없을 때는 false를 리턴한다.
getter 메서드(getString(), getInt()) 등을 이용해서 각 칼럼의 데이터값을 가져올 수 있다.
예)
ResultSet RS=stmt.executeQuery("select * from emp"); // emp 테이블의 데이터를 가져오는 ResultSet 객체 생성
while(RS.next()){ // next()를 이용해서 가져온 테이블의 각 행으로 커서를 이동한다.
executeQuery() ==> select 문을 이용해서 ResultSet 객체를 받아올 때 실행한다.
executeUpdate()==> select 문을 제와한 SQL명령문을 실행한다.
예)
Statement stmt=conn.createStatement(); // Statement 객체 생성
String sql="create table member(id varchar2(20), pw varchar2(20))";
stmt.executeUpdate(sql); //SQL문 수행
3. ResultSet Interface
: exectueQuery()메서드의 SQL문이 실행된 결과의 데이터를 받기 위한 인터페이스.
ResultSet은 최초 테이블의 텃 행에 커서를 유지하는 기능이 있다.
next() 메서드를 사용하면 다음 행으로 커서를 이동하고, 더 이상의 데이터가 없을 때는 false를 리턴한다.
getter 메서드(getString(), getInt()) 등을 이용해서 각 칼럼의 데이터값을 가져올 수 있다.
예)
ResultSet RS=stmt.executeQuery("select * from emp"); // emp 테이블의 데이터를 가져오는 ResultSet 객체 생성
while(RS.next()){ // next()를 이용해서 가져온 테이블의 각 행으로 커서를 이동한다.
String a=RS.getString(2); //커서가 이동할 때마다 2번째 칼럼의 데이터를 변수 a에 대입한다
System.out.println(a);
}
4. ResultSetMetaData Interface
: ResultSet객체에서 얻어온 테이블의 각 칼럼에 대한 형태와 타입을 읽기 위한 인터페이스.
ResultSet의 getMetaData() 메서드를 통해 객체를 생성할 수 있으며, 대표적인 메서드로는
테이블의 칼럼 수를 가져오는 getColumnCount()와 칼럼 이름을 가져오는 getColumnName()가 있으며 리턴타입은 각각 int와 String이다.
예)
Vector<String> value=new Vector<String>(); // 각 칼럼명을 받아올 변수 선언
ResultSetMetaData rsmd=RS.getMetaData(); //객체 생성
for(int i=1; i<=rsmd.getColumnCount(); i++){ // 해당 행의 칼럼 수 만큼
value.add(RS.getColumnName(i)); /// 칼럼의 데이터값을 읽어온다.
System.out.println(a);
}
4. ResultSetMetaData Interface
: ResultSet객체에서 얻어온 테이블의 각 칼럼에 대한 형태와 타입을 읽기 위한 인터페이스.
ResultSet의 getMetaData() 메서드를 통해 객체를 생성할 수 있으며, 대표적인 메서드로는
테이블의 칼럼 수를 가져오는 getColumnCount()와 칼럼 이름을 가져오는 getColumnName()가 있으며 리턴타입은 각각 int와 String이다.
예)
Vector<String> value=new Vector<String>(); // 각 칼럼명을 받아올 변수 선언
ResultSetMetaData rsmd=RS.getMetaData(); //객체 생성
for(int i=1; i<=rsmd.getColumnCount(); i++){ // 해당 행의 칼럼 수 만큼
value.add(RS.getColumnName(i)); /// 칼럼의 데이터값을 읽어온다.
}
5. PreparedStatement Interface
: Statement 가 하나의 SQL명령문을 한번 실행하고 나서 동일한 형태의 SQL문을 실행하기 위 해서는 다시 SQL명령문을 생성한 뒤 SQL문을 처리하는데 비해서, PreparedStatement는 위치표시자인 물음표(?)를 이용해서 반복적인 SQL문 처리가 가능하다.
비교)
Statement stmt=conn.createStatement();
String sql1="insert into member values('park1','1111')";
stmt.executeUpdate(sql1);
String sql2="insert into member values('park2','2222')";
stmt.executeUpdate(sql2);
예)
String sql="insert into member values(?,?)"; // 각 칼럼에 들어갈 값을 위치표시자로 설정
PreparedStatement ps=conn.prepareStatement(sql); //객체 생성
ps.setString(1,"kim1"); // 첫번째 위치표시자에 "kim1"을
ps.setString(2,"1111"); // 두번째 위치표시자에 "1111" 대입
ps.executeUpdate(); // 실행문을 업데이트한다.
ps.setString(1,"kim2"); // 다시 반복
ps.setString(2,"2222");
ps.executeUpdate();
5. PreparedStatement Interface
: Statement 가 하나의 SQL명령문을 한번 실행하고 나서 동일한 형태의 SQL문을 실행하기 위 해서는 다시 SQL명령문을 생성한 뒤 SQL문을 처리하는데 비해서, PreparedStatement는 위치표시자인 물음표(?)를 이용해서 반복적인 SQL문 처리가 가능하다.
비교)
Statement stmt=conn.createStatement();
String sql1="insert into member values('park1','1111')";
stmt.executeUpdate(sql1);
String sql2="insert into member values('park2','2222')";
stmt.executeUpdate(sql2);
예)
String sql="insert into member values(?,?)"; // 각 칼럼에 들어갈 값을 위치표시자로 설정
PreparedStatement ps=conn.prepareStatement(sql); //객체 생성
ps.setString(1,"kim1"); // 첫번째 위치표시자에 "kim1"을
ps.setString(2,"1111"); // 두번째 위치표시자에 "1111" 대입
ps.executeUpdate(); // 실행문을 업데이트한다.
ps.setString(1,"kim2"); // 다시 반복
ps.setString(2,"2222");
ps.executeUpdate();
728x90