2012-11-23 5 views
0

내 데이터베이스에서 일부 값을 반환하기 위해 웹 서비스에서 JDBC 쿼리를 선택했습니다. 이 표의 일부는이 질문에 첨부됩니다. 다음 쿼리를 수행 한 후 :JDBC 선택 쿼리가 잘못된 값을 반환합니다.

SELECT * FROM uses WHERE uses_user_fk='22'; 

을 나는 단지 하나 개의 행을받을 수 있지만 데이터베이스에 당신이 첨부 된 그림에서 볼 수 있듯이, 쿼리 조건을 충족 두 값입니다. 누군가 내가 실수 한 곳을 말해 줄 수 있습니까? 내가 쿼리

ResultSet tempResultSet = statement.executeQuery(query); 
을 실행하기 위해 다음과 같은 JDBC 명령을 사용하고 데이터베이스 테이블

벨로 이미지 사용 : 나열된 데이터베이스를 쿼리 경쟁 방법 아래
enter image description here

는 인수 쿼리는 동일합니다 이전 "SELECT * FROM 용도 ...". (= 22 uses_user_fk)하지만 결과는 동일 나는 따옴표를 를 사용하지 않고 나는 또한이 쿼리를 시도, 그 쿼리에 대한 응답이 4 것을 추가해야합니다 :

protected ArrayList<Integer> queryForIds(String query, String column) throws Exception { 
     ArrayList<Integer> ids = new ArrayList<>(); 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      connect = DriverManager 
        .getConnection(GeneralDatabaseConstants.DATABASE_CONNECTION_URL); 
      statement = connect.createStatement(); 
      ResultSet tempResultSet = statement.executeQuery(query); 
      if (tempResultSet.next()) 
       ids.add(new Integer(tempResultSet.getInt(column))); 
     } catch (Exception e) { 
      throw e; 
     } finally { 
      close(); 
     } 
     return ids; 
    } 
+0

잘못된 값주십시오! –

+3

Java 코드를 보여주십시오. 어쩌면 당신은'while' 대신에'if'를 사용했을 것입니다. –

+0

여러분은 단지 하나의 행만 반환한다고 생각하게 만드는 코드를 보여 주어야합니다. –

답변

0

교체

if (tempResultSet.next()) 

with

while (tempResultSet.next()) 
+0

나는 그것을 놓칠 수 있는지 모른다. 부끄러운 줄 알아. – Michal

관련 문제