JDBC 가 정확하게 조회 할 때 문자열 형 매개 변 수 를 검사 처리 합 니 다.

1587 단어 sqlHibernatejdbcdb2
오늘 이런 문제 가 발생 했 습 니 다. hibenate 로 정확 한 일치 조 회 를 할 때 계속 오류 가 발생 했 습 니 다.검색 매개 변 수 를 한 문 자 를 없 애 면 순조롭게 통과 할 수 있다.처음에는 hibenate 가 sql 변환 을 할 때 일치 하 는 필드 의 매개 변 수 를 검사 하 는 줄 알 았 습 니 다. 실체 설정 파일 에서 이 필드 의 길 이 는 10 이 고 조회 매개 변수의 길 이 는 11 이 었 기 때 문 입 니 다.그러나 설정 파일 을 수정 한 후에 도 문제 가 존재 합 니 다. hibenate 가 이러한 매개 변 수 를 검사 하지 않 은 것 을 보 았 습 니 다. 그러면 문 제 는 jdbc 에 나타 나 지 않 을 까요?여기까지 생각 하 니 테스트 코드 를 내 려 보 니 문제 가 JDBC 에 나타 난 것 이 확실 하 다.
   
      
PreparedStatement prsm = co.prepareStatement("select * from user where name= ?");
    	prsm.setString(1, name);
	prsm.executeQuery();

 데이터베이스 에 있 는 name 에 대응 하 는 필드 길 이 는 10 으로 정의 되 어 있 으 며, 매개 변수 에 있 는 name 의 길 이 는 11 입 니 다. 이렇게 조 회 를 실행 할 때 유형 이 일치 하지 않 는 문 제 를 보고 합 니 다. 그러나 이 글 을 쓰 면
    
PreparedStatement prsm = co.prepareStatement("select * from user where name= '"+name+"'");
    	//prsm.setString(1, name);
	prsm.executeQuery();

 무사히 통과 할 수 있 을 겁 니 다.아래 것 도 통과 할 수 있다.
PreparedStatement prsm = co.prepareStatement("select * from user where name like ?");
   	prsm.setString(1, name);
	prsm.executeQuery();

 
 
    (이상 DB2 데이터베이스 만 테스트 했 고 나머지 는 테스트 하지 않 았 습 니 다)
 
요약: 정확 한 일치 조 회 를 할 때 매개 변수의 길 이 를 주의해 야 합 니 다. 데이터 베 이 스 를 초과 하여 이 필드 에 대한 설정 길 이 를 초과 하지 않 는 것 이 좋 습 니 다. 만약 에 바 텀 방법 으로 Prepared Statement 을 포장 하고 setString 으로 매개 변 수 를 채 우 면 시스템 은 다른 점 을 던 집 니 다!그러나 sql 을 맞 추고 실행 하고 있다 면 이런 문 제 는 존재 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기