2014-08-30 1 views
2

내가 호출 다음 행 : 내가 볼ResultSet.refreshRow()를 호출 할 때 NotUpdatable이 표시되는 이유는 무엇입니까?

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
ResultSet resultSet = statement.executeQuery("select * from user"); 
resultSet.next(); 
resultSet.refreshRow();//exception throws here 

예외 다음

com.mysql.jdbc.NotUpdatable는 :하지 결과 집합 updatable.This이었다 성명에서 와야 결과 집합 결과 집합 유형이 인 ResultSet.CONCUR_UPDATABLE로 생성 된 쿼리는 하나의 테이블 만 선택해야하며 함수를 사용하지 않고 해당 테이블의 모든 기본 키를 선택해야합니다. 자세한 내용은 JDBC 2.1 API 사양 섹션 5.6을 참조하십시오.이 결과 집합은 결과 집합이 ResultSet.CONCUR_UPDATABLE 인 집합으로 작성되어야하며 쿼리는 하나의 테이블 만 선택해야하며 테이블은 함수를 사용할 수 없습니다. 해당 테이블 에서 모든 기본 키를 선택해야합니다. 자세한 내용은 자세한 내용은 JDBC 2.1 API 사양, 5.6 절을 참조하십시오.

은 refreshRow 방법 (들) 행을 재 취득 JDBC 드라이버에게 명시 적으로 에 응용 프로그램에 대한 방법을 제공합니다 : refreshRow 메소드의 javadoc을 읽으면 우리가 다음 찾을 수 있기 때문에

나는이 예외를 궁금해 데이터베이스에서

따라서 방향을 다음 database --> ResultSet

내가 따라와이 g 이해 :

ResultSet --> database 

은 따라서 나는 문제의 원인을 이해하지 않습니다

업데이트 할 수있는 방향 다음 사용할 가능성이있다.

알려 주시기 바랍니다.

+0

성명서 작성시 ResultSet.CONCUR_UPDATABLE을 설정하지 않았습니까? – ControlAltDel

+0

예. 나는 데이터베이스에서 읽기만 원한다! – gstackoverflow

+0

db에서 마지막으로 변경하려고합니다 – gstackoverflow

답변

0

당신이 ResultSet.CONCUR_READ_ONLY를 사용하고, 당신은 예외를 받고 그

com.mysql.jdbc.NotUpdatable됩니다 발생하지 설정 updatable.This 함께 만든 문에서 와야 을 설정 결과 결과 집합 형식 ResultSet.CONCUR_UPDATABLE, 쿼리는 하나의 테이블 만 선택해야하며 함수를 사용하지 않고 해당 테이블에서 모든 기본 키를 선택해야합니다. , 자세한 내용은 5.6 절을 JDBC 2.1 API 사양을 참조하십시오. 그래서 \

, ResultSet.CONCUR_UPDATABLEResultSet.CONCUR_READ_ONLY을 변경, 문제를 해결했다. 옳은?

이제 알겠지만 당신은 그렇게하고 싶지 않습니다. 내가 맞습니까? 그래, 나는 당신이, 데이터베이스와

  • ResultSet.CONCUR_READ_ONLY를 ResultSet의 혼란을 생각하면 만의 ResultSet 아니라 데이터베이스, 유사
  • ResultSet.CONCUR_UPDATABLE의, 갱신의 ResultSet하지 데이터베이스 의미를 읽을 것을 의미한다.

에있어서, resultSet.refreshRow()는, 따라서 그것을 바르게 ResultSet 업데이트 할 필요는 resultSet 업데이트 할 가정합니다. 나는 그것이 지금 분명하기를 바란다.

+0

ResultSet.CONCUR_UPDATABLE을 사용하면 예외가 사라집니다 !!! – gstackoverflow

관련 문제