Java - JDBC-2

2020. 6. 29. 22:41Java

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
 
public class Ex {
 
    public static void main(String[] args) {
        String name="구미호";
        String id="FOXY";
        String password="FOXY999";
        String jumin="999999-9999999";
        
        //customer 테이블 이름, 아이디, 패스워드 ,주민번호 INSERT
        
        
        //DB 작업에 필요한 클래스를 try 문 밖에 선언하면 finally블록에서 close()가능
        Connection con=null;
        PreparedStatement pstmt=null;
        
        
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://localhost:3306/java5";
            String user="root";
            String pass="1234";
            con=DriverManager.getConnection(url,user,pass);
            String sql="INSERT INTO customer VALUES(null,?,?,?,?)";
            pstmt=con.prepareStatement(sql);
            pstmt.setString(1, name);
            pstmt.setString(2, id);
            pstmt.setString(3, password);
            pstmt.setString(4, jumin);
            
            int insertCount=pstmt.executeUpdate();
            if(insertCount>0) {
                System.out.println("INSERT 성공");
            }else {
                System.out.println("INSERT 실패");
            }
            
            
            } catch (ClassNotFoundException e) {
                System.out.println("드라이버 로드 실패");
                e.printStackTrace();
            } catch (SQLException e) {
                System.out.println("DB 연결 실패! 또는 SQL 구문오류");
                e.printStackTrace();
            } finally {
                //자원반환->예외 발생 여부와 관계없이 실행되어야 하므로
                //finally 블록 내에서 close() 메서드를 호출한다. 
                try {
                    pstmt.close();
                    con.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
    }
 
}
 
cs

 

JDBC를 활용해 DB와 연결해 삽입 작업을 해보았다. 

int insertCount 로 int 형 변수를 선언한 이유는 pstmt.executeUpdate() 구문의 리턴 값이  int형이기 때문에

작업이 성공했을 경우 리턴받은 int 형으로 바로 밑의 if 구문을 통해 작업의 성공 유무를 확인하고자 하기 때문에 위에서와 같이 작업해 보았다. 그리고 밑의 finally {} 구문에는 작업을 하느라 선언했던 PreparedStatement와 Connection을 확실히 마무리하고자 close()를 하기 위해 선언하는 공간으로 안에 적어 두어도 닫히지 않을 경우를 대비해 다시 try~catch구문을 활용해야 한다.

'Java' 카테고리의 다른 글

Java - DAO  (0) 2020.06.29
Java - DTO  (0) 2020.06.29
Java - JDBC  (0) 2020.06.29
Java - Set,List  (0) 2020.06.27
Java - toString(),equals()  (0) 2020.06.27