2012-06-26 2 views
2

많은 테이블이 포함 된 쿼리에서 데이터를 검색 할 수 없습니다. 나는이 프로그램을 실행할 때 오류가 발견되지 않았다JDBC ResultSet 다른 테이블에서 열 가져 오기

String sql = "SELECT " 
      + "s.Food_ID AS 'Sales_FoodID', " 
      + "f.Food_Name AS 'foodName' " 
      + "FROM Ordering o, Sales s, Food f" 
      + " WHERE o.Table_No = " + tableNo + "" 
      + " AND o.Paid = '" + NOT_PAID + "'" 
      + " AND s.Order_ID = o.Order_ID" 
      + " AND f.Food_ID = s.Food_ID;"; 
    resultSet = statement.executeQuery(sql); 

다음과 같이 쿼리를 가지고,하지만 난 테이블의 컬럼 데이터를 얻기 위해이 줄을 추가 한 후 :

String orderID = resultSet.getString("foodName"); 

을 나는이 오류를 제공하고 있습니다 :

java.sql.SQLException: Column not found 

그 이유는 누구입니까?

+0

이 문자열 주문 ID = resultSet.getString'에 중단 점을 설정 자바 API에서 제공 setXxx()를 호출 할 수 있습니다 그 후 DB

에서 기록을 당겨에 next()를 호출해야합니다 (" foodName ");''resultSet'에 포함 된 내용을 확인하십시오. – ZnArK

+0

@ZnArK 이것은 ResultSet.getString (String)이 별칭/레이블이 아닌 이름으로 열을 반입하기 때문에 발생합니다. 이것은 실제로 "누구나 알 수 있습니까?"라는 질문에 대한 대답이지만 문제가 해결되지 않을 것이므로 주석으로 남겨 두겠습니다. – Goodwine

답변

4

next() 메서드를 사용해야합니다.

ResultSet은 첫 번째 행의 이전 위치에 내재적으로 배치되므로 next를 호출해야 현재 위치를 가져올 수 있으며 유효한 경우 true을 반환하고 그렇지 않으면 false (커서가 마지막 행 다음에 위치 함)을 반환합니다.

rs = statement.executeQuery(sql); 
while (rs.next()) { 
    String orderID = rs.getString(2); 
} 


참고 : 당신이 당신의 문 대신 COLUMNNAME의 인덱스를 사용에 내가 추천 어떻게 보이는지 알고 또한 rs.getString(<columnName>)하지만 경우에 사용할 수 있습니다. 호출 후

0

resultSet.executeQuery() 당신이

관련 문제