JSP

JDBC 사용하기

당근개발자 2021. 5. 11. 00:51

구현

-> 

JDBC 프로그램 - DB API  -> JDBC 드라이버 -> DB

 

1. JDBC 드라이버 로딩하기

2. DBMS 서버와 접속하기

3. Statement 또는 PrepareStatement 객체 생성하기

4. SQL 문 실행하기

5. 자원 해제하기 

 

 

- Connection -

 

DriverManager.getConnection() 은 실제 자바 프로그램과 데이터베이스를 네트워크상에서 연결을 해주는 메서드이다.

연결에 성공하면  DB와 연결된 상태를 Connection 객체로  표현하여 반환한다.

Connection은 네트워크상의 연결 자체를 의미한다.

 

-Statement 객체-

 

Connection 객체는 실제 자바프로그램과 DB사이를 네트워크상에서 연결된 상태를 의미한다.  이 Connection을 자바프로그램과 DB사이에 연결된 길이라고 생각해보자. 즉 DriverManager.getConnection() 메서드는 자바프로그램과 DB와 연결된 길을 만들어 주는 기능을 한다.

일대일로 연결된 길(Connection)이 만들어졌으면 이 길을 통해 자바 프로그램은 DB 쪽으로 SQL문을 전송하고, DB는 처리된 결과를 다시 자바프로그램 쪽으로 전달해야 한다. 바로 이 역할을 하는 객체가 Statement이다.

서로에게 데이터를 전달해주는 객체이다.

 

ex)

Steatement stmt = conn.createStatement();

conn은 DB와 자바프로그램과 연결된 길이고, conn이란 도로 전용으로 사용되는 SQL 문과 처리 결과를 서로 전달해주는 트럭과 같은 역할을 하는 Stmt가 만들어 진것이다.

 

-SQL실행-

SQL문을 실행하기 위해 사용되는 메서드는 Statement 객체에서 제공하는 executeQuery() 또는  executeUpdate() 메서드의 형식이다.

executeQuery()의 반환값은 ResultSet 형식을 반환

executeUpdate()의 반환값은 int 형식을 반환

select 문 -> executeQuery()

그외 -> executeUpdate()

 

-ResultSet-

ResultSet 은 executeQuery() 메서드에서 실행된 select의 결과값을 가지고 있는 객체입니다.

 

ResultSet rs = stmt.executeQuery("select * from from test");

ResultSet 객체는 select한 결과 레코드가 있든 없든 항상 시작 빈행과 끝 빈행을 가진다.

 

void afterLast()  ->>  커서를 끝 빈행으로 위치시키는 메서드

void beforeFisrt() ->>  커서를 시작 빈행으로 위치시키는 메서드

 

boolean next()

next()는 커서 다음에 레코드가 있는지를 판단하여 없으면 false를 반환하고, 있으면 true를 반환한 다음에 커서를 다음 레코드로 이동시키는 메서드이다.

 

String getString(int columnIndex)

String getStrin(String columnLabel)

-> ResultSet 객체가 가지고 있는 getter 메서드들은 모두 컬럼의 값을 추출하는 메서드이다.

컬럼의 값을 추출하고자  하는 데이터 타입에 따라 getter 메서드를 선택하면된다.

 

 

 

- PreparedStatement 객체 -

PreparedStatement 객체는 Statement 객체와 같은 기능을 수행하는 객체로서, 연결된 DB에 SQL 문을 실행한 후 결과값을 가져오는 메서드를 가지고 있다. Statement 와 다른 점은 PreparedStatement 객체는 생성시 실행할 SQL ansdmf ?  기호와 함께 작성할 수있다는 점이다. 

ex)

 

String id = request.getParameter("id");

String pwd = request.getParameter("pwd");

 

// Statement 사용

Statement stmt = conn.createStatement();

stmt.executeUpdate("insert into test values ('"+id+"','"+pwd"' )");

 

//PreparedStatement 사용

PreparedStatement pstmt = conn.prepareStatement("insert into test values(?,?)");

pstmt.setString(1,id);

pstmt.setString(2,pwd);

pstmt.executeUpdate();

 

 

-자원 해제- 

JDBC 프로그래밍을 하려면 JDBC 드라이버를 로딩후 DB서버와 접속하여 Connection 객체를 얻어야 하며, 다음에는 Connection에서 사용할 Statement 또는 PreparedStatement 객체를 생성하여 SQL 문을 실행한다.

SQL문 실행시 select문이면 결과값을 갖는 ResultSet 객체를 반환 받아야 한다.

 

-Connection : DB 연결 객체

- Statement, PrearedStatement  : SQL 문 실행 객체

- ResultSet  : select 문 결과를 가지는 객체

 

위와 같은 객체들은 DB 관련 작업을 할때필요하다. 이 객체들을 이요하여 DB관련 처리 작업이 완료된 다음에는 사용했던 객체들을 메모리에서 , 해제 해주어야 한다.

-rs.close()

-stmt.close() , pstmt.close()

-conn.close()

 

 

 

 

 

 

-