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()를 해주지 않으면 소켓통신을 하는 객체들을 닫아주지 않기 때문에 메모리 누수현상이 발생하고
심각한 경우 실제 서비스에서 몇명만 접속해도 서비스가 불가되는 어이없는 현상이 발생한다.
'Java' 카테고리의 다른 글
[Java] - 메이븐 프로젝트 (0) | 2020.11.04 |
---|---|
[Java] - 객체지향적인 Java - DB 연동 (0) | 2020.10.05 |
[Java] - Java에서 Maria DB연동하기 (0) | 2020.09.29 |
[Java] - HashMap과 List를 같이 사용하기 (0) | 2020.09.28 |
[Java] - Set 컬렉션 , Map 컬렉션 (0) | 2020.09.28 |