반응형
ResultSet 예외-결과 세트 시작 전
ResultSet
개체 에서 데이터를 가져 오는 데 문제가 있습니다 . 내 코드는 다음과 같습니다.
String sql = "SELECT type FROM node WHERE nid = ?";
PreparedStatement prep = conn.prepareStatement(sql);
int meetNID = Integer.parseInt(node.get(BoutField.field_meet_nid));
prep.setInt(1, meetNID);
ResultSet result = prep.executeQuery();
result.beforeFirst();
String foundType = result.getString(1);
if (! foundType.equals("meet")) {
throw new IllegalArgumentException(String.format("Node %d must be of type 'meet', but was %s", meetNID, foundType));
}
오류 추적 :
Exception in thread "main" java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1072)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:986)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5656)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576)
at nth.cumf3.nodeImport.Validator.validate(Validator.java:43)
at nth.cumf3.nodeImport.Main.main(Main.java:38)
내가 여기서 뭘 잘못하고 있니?
기본적으로 첫 번째 행 앞에 커서를 놓고 데이터를 요청합니다. 커서를 첫 번째 행으로 이동해야합니다.
result.next();
String foundType = result.getString(1);
if 문이나 루프에서이 작업을 수행하는 것이 일반적입니다.
if(result.next()){
foundType = result.getString(1);
}
모든 대답은 .next ()를 사용하거나 .beforeFirst ()와 .next ()를 사용합니다. 하지만 이건 왜 안돼?
result.first();
따라서 포인터를 첫 번째 레코드로 설정하고 거기에서 이동합니다. Java 1.2부터 사용할 수 있으며 ResultSet이 하나의 특정 레코드에 존재하는 모든 사람에게 이것을 언급하고 싶었습니다.
결과에 액세스하기 전에 result.next ()를 수행해야합니다. 하는 것은 매우 일반적인 관용구입니다.
ResultSet rs = stmt.executeQuery();
while (rs.next())
{
int foo = rs.getInt(1);
...
}
next()
첫 번째 행에서 값을 읽기 시작하기 전에 호출 해야합니다. beforeFirst
커서 를 첫 번째 행 앞에 놓으 므로 읽을 데이터가 없습니다.
다른 패키지에 모든 쿼리 메서드를 포함하는 클래스를 만드는 것이 더 낫기 때문에 모든 클래스에 모든 프로세스를 입력하는 대신 해당 클래스에서 메서드를 호출하기 만하면됩니다.
데이터를 요청하기 전에 포인터를 첫 번째 행으로 이동해야합니다.
result.beforeFirst();
result.next();
String foundType = result.getString(1);
참고 URL : https://stackoverflow.com/questions/2120255/resultset-exception-before-start-of-result-set
반응형
'program tip' 카테고리의 다른 글
Angular HttpClient "파싱 중 Http 실패" (0) | 2020.11.07 |
---|---|
jquery에! important를 포함하는 방법 (0) | 2020.11.07 |
Mysql 1050 오류 "테이블이 이미 있습니다." (0) | 2020.11.07 |
PHP로 계산 된 CRAP 인덱스를 읽고 개선하는 방법 (0) | 2020.11.07 |
"공유 객체를 만들 때`.rodata.str1.8 '에 대한 재배치 R_X86_64_32는 사용할 수 없습니다."로 컴파일 실패 (0) | 2020.11.07 |