TIL 2021.04.11 [JDBC]

Kyu·2021년 4월 11일
0

TIL

목록 보기
91/322

PreparedStatement

insert할때는 select할때와 좀 다른부분이 있다
slect가 아닐땐 결과집합이 없다
select문장은 쿼리를 이용해서 결과집합 유저셋을 얻는다.
다시 말하면, 결과집합이 있는 셀렉트를 실행할때는 유저셋을 반환하는 쿼리를 사용한다.
인서트, 업데이트, 딜리트 등 조작할때는 executeQuery()를 쓰는게아니라 executeUpdate()를쓴다.

INSERT 문을 직접 코드에 입력하면 컬럼갯수만큼 복잡한 문자열이 나온다. 예를들어서 VALUES 뒤에 값을 넣어줄때 '따옴표를 넣어줘야 하는데 "'" 라고 까지 찍어주고 복잡해보인다

        String sql = "insert into `mynewlecture`.`notice`" +
                "(" +
                "`title`," +
                "`writer_id`," +
                "`content`," +
                "`files`" +
                ")" +
                "values" +
                "(" +
                "'" + title + "'" + "," +
                "'" + writedId + "'" + "," +
                "'" + content + "'"+ "," +
                "'" + files + "'" +
                ")";

이걸 위해 나온게 PreparedStatement 인데 위 코드처럼 복잡한 코드를 아래처럼 값을 ? 로 해결할 수 있다

        String sql = "insert into `mynewlecture`.`notice`" +
                "(" +
                "`title`," +
                "`writer_id`," +
                "`content`," +
                "`files`" +
                ")" +
                "values" +
                "(?,?,?,?)"

물음표로 넣고 PreparedStatement 를 이용하면

        PreparedStatement st = con.prepareStatement(sql);
        st.setString(1, title);
        st.setString(2, writerId);
        st.setString(3, content);
        st.setString(4, files);

위와 같이 준비를 시킬 수 있다.

준비가되면 이제 실행하는 메서드를 사용해야한다

		int result = st.executeUpdate();

executeUpdate()는 row의 갯수를 반환한다. 예를들어서 insert를 지금은 한개를 넣어서 1을 반환하는데 6개를 넣는 코드를 넣으면 6을 반환하고 insert외에도 delete나 update도 똑같이 동작한다.
보통 조건검사를 하기 위해서 쓴다.

profile
TIL 남기는 공간입니다

0개의 댓글