티스토리 뷰

JSP

[JSP #3 ] DAO작성 Insert, Delete Query

녹색꼬맹이 2017. 9. 11. 22:16
반응형
SMALL

 

DAO Class 안에 Insert Method 작성.

 

Insert Query

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
package my.student;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class StudentDAO {
 
    private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;
 
    String url, user, pass;
 
    //생성자
    public StudentDAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        //Oracle ID 및 PASSWORD 와 경로 
        url = "jdbc:oracle:thin:@localhost:1521:xe";
        user = "java07";
        pass = "java07";
    }
 
    //Insert
    public int insertStudent(String id, String name, String cname) throws SQLException {
        String sql = "insert into jsp_student values(?, ?, ?)";
        try {
            con = DriverManager.getConnection(url, user, pass);    //DriverManager 를 이용하여 DB에 연결
            ps = con.prepareStatement(sql);    // Query 문 전송.
            // 동적 Query문으로 Coulmn Data 전송.
            ps.setString(1, id);
            ps.setString(2, name);
            ps.setString(3, cname);
            int res = ps.executeUpdate();    //결과 Feedback
            return res;
        } finally {    //try절이 끝나면 다른 Thread 를 이용하여 실행된다.
            if (ps != null)     ps.close();
            if (con != null) con.close();
        }
    }
}
cs

 

Insert Query 문

sql = "insert into [Table 명] values([Column 명 1,2,3....]);

 

쿼리 방식에 있어서..

정적 쿼리 방식 : 변수가 바뀔 때마다 새로운 SQL 을 생성하여 DB쿼리를 수행.

동적 쿼리 방식 : 변수가 바뀔 때마다 파싱을하지 않고 변수 바인딩 과정을 통해 DB 쿼리를 수행한다.

 

현재 적용되어 있는 쿼리는 동적 쿼리문이다.

 

정적 쿼리문에 경우에는

String sql = "insert into jsp_student values('1001', '홍길동', '1반);

 

식으로 정의된다.

 

정적쿼리와 동적쿼리는 각각의 장단점이 있지만 나는 동적 쿼리문을 사용했다.

 

 

 

 

 

Delete Query

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
package my.student;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class StudentDAO {
 
    private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;
 
    String url, user, pass;
 
    //생성자
    public StudentDAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        //Oracle ID 및 PASSWORD 와 경로 
        url = "jdbc:oracle:thin:@localhost:1521:xe";
        user = "java07";
        pass = "java07";
    }
 
    //Delete
    public int deleteStudent(String id) throws SQLException{
        String sql = "delete from jsp_student where id=?";
        try{
            con = DriverManager.getConnection(url, user, pass);
            ps = con.prepareStatement(sql);
            ps.setString(1, id);
            int res = ps.executeUpdate();
            return res;
        }finally {    //try절이 끝나면 다른 Thread 를 이용하여 실행된다.
            if (ps != null)         ps.close();
            if (con != null)    con.close();
        }
    }
}
cs

Delete Query문

sql = "delete from [Table 이름] where [지우고 싶은 Column 명] = [해당이름]";

 

 

Query 문에서 Insert 와 Delete 문의 피드백 값은 Int 형으로 반환된다.

제대로 수행했으면 1이상의 값이 나오고,

제대로 수행하지 않았으면 0의 값이 반환된다.

 

 

 

 

반응형
LIST
댓글