변수에 들어가는 값이 bind로 대입되는 것과 직접 입력되는것의 차이입니다.
##는 bind 변수를 사용하는 것과 마찬가지로 값을 대입해 주는 것이고,
$$는 값을 가져와서 문자 직접 입력해주고 prepared statement 구문을 사용하는 것입니다.
추가로 preapred statement
1. prepareStatement
- PrepareStatement 객체는 Connection 객체의 PrepareStatement() 메소드를 사용해서 생성
- SQL 문장이 미리 컴파일되고, 실행시간동안 인수값을 위한 공간을 확보할 수 있다는 점에서 Statement 객체와는 다름
- 동일한 질의문을 특정 값만 바꾸어서 여러번 실행해야 할 때, 많은 데이터를 다루기 때문에 질의문을 정리해야 할 필요가 있을때
인수가 많아서 질의문을 정리해야 할 필요가 있을 때 사용하면 유용하다.
- statement 객체의 SQL은 실행될 때 매번 서버에서 분석되어야 하는 반면, PrepareStatement 객체는 한번 분석되면 재사용이 용이합니다.
- 각각의 인수에 대해 위치홀더(placeholder)를 사용하여 SQL 문장을 정의할 수 있게 해줍니다.
- 위치홀더는 물음표로 표현됩니다.
- 반드시 trycatch문 사용필요, 또는 throws 처리 해야한다.
try{
String sql ="insert into member values(?,?,?,?)";
pstmt =conn.PrepareStatement(SQL);
pstmt.setString(1,id);
pstmt,setString(2,passwd);
}catch(SQLExeption e){
}
Statement 객체와 PrepareStatement 객체 중에 무엇을 사용하는 것이 좋은가는 PreparedStatement 객체이다.
동일한 질의문 특정 값만 바꾸어서 여러번 실행해야 할때, 많은 데이터를 다루기 때문에 질의문을 정리해야할 필요가 있을 때
인수가 많아서 질의문을 정리해야 할 필요가 있을 때 좋다.
미리 컴파일되기 때문에 쿼리의 수행속도가 Statement 객체에 비해 빠름
Statement 객체는 쿼리 실행시 작은 따옴표가 들어있으면 작은 따옴표를 두개로 표시해야한다.
그러나 PreparedStatement 객체는 작은 따옴표의 문제를 쿼리 실행시 자동으로 처리하므로 신경 쓸 필요없다.
'Stackoverflow' 카테고리의 다른 글
[JAVA] HEAP DUMP 분석을 통한 PERM AREA MEMORY LEAK 원인 진단 (0) | 2017.10.19 |
---|---|
insertion sort (0) | 2017.09.26 |
통합 테스트를 실행할 때 데이터베이스를 깨끗하게 유지하는 방법? (0) | 2017.09.26 |
heap dump -출처:http://kwonnam.pe.kr/wiki/java/memory (0) | 2017.09.25 |
IE DUMP 뜨기 (0) | 2017.09.25 |