2013년 8월 18일 일요일

[4주차 1일] JDBC로 MySQL연결

일단 MySQL 서버가 동작 중이어야 한다.

0. MySQL 서버에 연결 할 도구 준비

 - JDBC Driver 클래스 중( .jar 파일에 들어있는 클래스들 중에서) java.sql.Driver 인터페이스를 구현한 클래스를 먼저 로딩한다.
 - 이 클래스가 java.sql.Connection 인터페이스를 구현한 클래스를 알고 있다.

* DBMS에 종속 되지 않기 위해서 VM arguments를 추가해서 DBMS에 종속적인 프로그램이 되지 않도록 하는 것이 좋다.
 (Run Configurations > Arguments > -D키=값)

ex>
//Run Configurations > Arguments > -DdriverClass=com.mysql.jdbc.Driver
String driverClass = System.getProperty("driverClass");
Class.forName(driverClass);



1. 서버와 연결

- DriverManager가 내부적으로 DBMS에 맞는 적절한 Driver를 연결 시켜주고, 그 객체는 뭔지 모르지만 해당 Driver에서 Connection객체를 리턴해 준다.

ex>
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test", "test", "test");



2. SQL문 보낼 도구 얻기

- craeteStatement() 또는 preparedStatement() 를 호출하여 SQL문을 서버에 보낼 도구를 얻는다.

ex>
// Statement
Statement stmt = con.createStatement();
// PreparedStatement
PreparedStatement stmt = con.prepareStatement("select * from MEMBERS");

* Statement를 얻을 때는 SQL문이 필요 없고, PreparedStatement를 얻을 때는 SQL문이 필요 하다.



3. SQL문 서버에 보냄

executeQuery() 또는 executeUpdate() 는 서버에 SQL문을 보낸다.
- 서버는 결과를 준비한다.
executeQuery() 또는 executeUpdate() 는 서버에서 결과를 가져올 도구를 리턴한다. 
(착각하기 쉬우니까 꼭! 염두해 두자!!!! next()를 호출해야지 결과를 가져오는 것이다.)

* executeQuery(): select 할 때 사용.
* executeUpdate(): insert, update, delete 할 때 사용.

ex>
// executeQuery
ResultSet rs = stmt.executeQuery("select MNAME, PHONE, EMAIL from MEMBERS order by MNAME");
// executeUpdate
int count = stmt.executeUpdate("insert into MEMBERS(MNAME) values ('홍길동')");




4. 서버의 결과를 가져와서 출력

- next()를 호출하여 서버로부터 레코드의 결과를 가져온다.

ex>
while( rs.next() ) {
System.out.print(rs.getString("MNAME") + ",");
System.out.print(rs.getString("PHONE") + ",");
System.out.println(rs.getString("EMAIL"));
}


댓글 없음:

댓글 쓰기