[Java] - MariaDB 연동이후 Java에서 SQL문 실행하기

1. DB 접속 객체

2. Statement 객체

3. ResultSet 객체

 

위 3개의 객체가 필요하며 각 객체에 대한 설명은 다음 코드의 주석에 있는 내용과 같다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package chapter14;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException; // SQL 에러 클래스
import java.sql.Statement;
 
public class DB_connector {
 
    public static void main(String[] args) throws SQLException {
        // DB 접속 객체선언
        Connection conn = null;
 
        // sql 실행할 객체 선언
        Statement stmt = null;
 
        // sql 실행결과를 담을 객체 선언
        ResultSet rs = null;
 
        try {
            // Maria db 드라이버 로드
            Class.forName("org.mariadb.jdbc.Driver");
            // 데이터베이스 접속
            conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/ai_db""root""ai1234");
 
            stmt = conn.createStatement(); // statement 객체생성
            rs = stmt.executeQuery("select * from student;"); // 실행결과 객체에 slq문 실행결과를 저장
 
            System.out.println("name\t\tid\tgrade ");
            while (rs.next()) {
                System.out.println(rs.getString("name"+ "\t  " + rs.getString("id"+ "\t" + rs.getString("grade"));
            }
 
        } catch (Exception e) {
            System.out.println(e.toString());
        } finally {
            try {conn.close();} catch (Exception e) {} // DB에 연동된 객체들은 모두 close() 해줘야한다.
            try {stmt.close();} catch (Exception e) {}
            try {rs.close();} catch (Exception e) {}
        } // end finally
 
        if (conn != null) {
            System.out.println("접속성공");
        }
 
    }
 
}
 
cs

 

이때 finally 구문에서 각 객체들을 모두 close() 해주는데 그 이유는

close()를 해주지 않으면 소켓통신을 하는 객체들을 닫아주지 않기 때문에  메모리 누수현상이 발생하고

심각한 경우 실제 서비스에서 몇명만 접속해도 서비스가 불가되는 어이없는 현상이 발생한다.