1. JDBC 드라이버 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("com.mysql.jdbc.driver");
Class.forName("com.mariadb.jdbc.driver");
2. Connection 객체 생성 및 db 연결
java.sql.Connection 객체 이용
String jdbc_url = "jdbc:dbms이름://IP주소:port/db명" // 내컴퓨터에 있을경우 localhost 사용
Connection conn = DriverManager.getConnection(JDBC_url, "아이디", "비밀번호");
3. Statement 객체 생성
1) java.sql.Statement 객체
- SQL 구문을 입력받아 질의를 수행하고 결과값을 가져옴.
- Connection 객체의 createStatement() 메소드 사용
- Statement 객체를 이용하여 직접 SQL 문 실행 가능
Statement stmt = conn.createStatement();
stmt.executeUpdate("insert into member values('"
+ request.getParameter("id") + "','" + request.getParameter("pw")+"')'");
2) java.sql.PreparedStatement 객체
- SQL 구문 미리 컴파일 하여 Statement 객체보다 효율적으로 SQL처리 가능
- 입력 파라미터 위치 지정하기 위해 SQL 구문에 물음표 사용
PreparedStatement pstmt = conn.prepareStatement("insert into member values(?,?)");
pstmt.setString(1, request.getParamter("id");
pstmt.setString(2, request.getParamter("pw");
4. SQL 질의를 수행(전송)
java.sql.Statement or java.sql.PreparedStatement 객체
메소드 | 리턴 타입 | 설명 |
executeQuery(String sql) | java.sql.ResultSet | SELECT 문으로 데이터 추출 위한 SQL 실행 데이터를 간직하고 있는 ResultSet 리턴 |
executeUpdate(String sql) | int | INSERT, UPDATE, DELETE 실행(데이터 추출 없음) 반영된 레코드 개수를 int형으로 리턴 |
PreparedStatement pstmt = conn.prepareStatement("insert into member values(?,?)");
pstmt.setString(1, request.getParameter("id");
pstmt.setString(2, request.getParameter("pw");
pstmt.executeUpdate();
5. 결과받기
- 데이터 추출된 데이터는 ResultSet 객체로 가져옴
java.sql.ResultSet 객체 : next() 반환값은 Boolean 형
String query = "SELECT * FROM MEMBER"; // select문으로 ResultSet 객체에 데이터를 가져온 후 데이터 추출
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query); // ResultSet 객체의 메서드 통해 데이터 추출
while(rs.next()) {
author = rs.getString(1);
id = rs.getInt(2);
}
rs.close();
- 만약 sql문이 데이터 추출이 아닌 경우 ResultSet 생략
6. 연결해제 (생성된 객체 닫기)
- Connection을 close()하지 않으면 사용하지 않는 연결이 유지됨.
- 연결해제 함으로써 낭비할 수 있는 DB 자원 방지
rs.close() // ReseultSet object
stmt.close() // Statement object
conn.close() // Connection object
'프로그래밍 > HTML,CSS' 카테고리의 다른 글
[CSS] css, sass, scss (0) | 2022.03.01 |
---|---|
[CSS] 선택자 (0) | 2022.03.01 |
[CSS] position (0) | 2022.02.28 |
[CSS] box-sizing (0) | 2022.02.28 |
[HTML] block, inline (0) | 2022.02.28 |