난 그냥 두 개의 열이 포스트 그레스 테이블 "계정"의 값을 업데이트하는 DAO의 메소드를 작성하는 것을 시도하고있다 : "ID"문자열 "균형"자바 DAO 업데이트 쿼리 실패
public Account setAccountBalance(String id, Integer balance) {
Handle h = dbi.open();
try{
return h.createQuery("UPDATE accounts SET balance=" + balance.intValue() +
" WHERE id=\'" + id +"\';")
.mapTo(Account.class)
.first();
} finally {
h.close();
}
}
을 int로하지만에 I을 실행 다음 예외를 참조하십시오. org.skife.jdbi.v2.exceptions.NoResultsException : 쿼리에 결과 세트가 없습니다. 아마도 업데이트를 의미할까요? [UPDATE 계정 SET 균형 = 20 WHERE id = '1'; ", 다시 작성 :"UPDATE 계정 SET 균형 = 20 WHERE id = 'WHERE ID ='1 '; "
문제가 쿼리 구문 또는 DAO에서 사용되는 경우 어떤 아이디어가 필요하십니까?
쿼리 문자열에서 세미콜론을 제거해볼 수 있습니다. 그리고 쿼리 매개 변수의 문자열 연결 대신 준비된 문을 사용해야합니다. –
또한, 일반적으로 (JDBC 드라이버에 따라) 결과 세트가없는 UPDATE SQL이 있습니다. 업데이트에 잘못된 API 메소드 ('createQuery()')를 사용하고있을 가능성이 있습니다. –
또한 준비된 문에 대해 알아보십시오. 귀하의 코드는 SQL 삽입에 취약하며 ID 이베지에 견적이 포함되어 있으면 실패합니다. –