2012-06-26 1 views
0

데이터베이스에서 2 개의 값을 검색하는 함수를 빌드했으며 값이 있으면 값을 반환합니다.mysql에서 반환 응답을 확인하십시오 내가 보낸 매개 변수와 동일

public List<Conniction> findPath(int one,int two){ 
    List<Conniction> list = new ArrayList<Conniction>(); 
    Connection c = null; 
    String sql = "SELECT * FROM conniction WHERE oneid="+one+"&& twoid="+two; 
    try { 
     c = ConnectionHelper.getConnection(); 
     Statement s = c.createStatement(); 
     ResultSet rs = s.executeQuery(sql); 
     ResultSetMetaData metaData = rs.getMetaData(); 
     int columncount = metaData.getColumnCount(); 
     //direct result 
     if (columncount > 0) { 
      System.out.println("Match one and two found!"); 
      while (rs.next()) { 
       list.add(processRow(rs)); 
      } 
     } 
     else{ 
      String sql2 = "SELECT * FROM conniction WHERE oneid="+one; 
      s = c.createStatement(); 
      rs = s.executeQuery(sql2); 
      metaData = rs.getMetaData(); 
      columncount = metaData.getColumnCount(); 
       if (columncount > 0) { 
        System.out.println("One Match found!"); 
        while (rs.next()) { 
         list.add(processRow(rs)); 
        } 
       } 
     } 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return list; 

} 

I는 반환되는 매개 변수의 값이 oneidtwoid 자사 정말 정답 여부를 확인하기 위해 무엇을 확인하려면 어떻게합니까. 항상 보낸 것과는 다른 것을 반환합니다.

답변

0

그 최선의 해결책 인 경우 나도 몰라,하지만 당신은 할 수 : * 목록을

당신의 방법을 * 매개 변수 으로 목록 개체를 제공하고 코드 를 반환 * 코드를 확인하고 사용

public int findPath(List<Conniction> list, int one, int two) { 
     ... 
     if (columncount > 0) { 
      System.out.println("Match one and two found!"); 
      while (rs.next()) { 
       list.add(processRow(rs)); 
      } 
      return 2; 
     } else { 
      String sql2 = "SELECT * FROM conniction WHERE oneid="+one; 
      s = c.createStatement(); 
      rs = s.executeQuery(sql2); 
      metaData = rs.getMetaData(); 
      columncount = metaData.getColumnCount(); 
       if (columncount > 0) { 
        System.out.println("One Match found!"); 
        while (rs.next()) { 
         list.add(processRow(rs)); 
        } 
        return 1; 
       } 
     } 
    ... 

} 코드에서

, 당신은 당신이 반환 확인 방법 전화 :

0123을 매개 변수로 목록을 가져옵니다
... 
    List<Conniction> connlist = new ArrayList<Conniction>(); 
    int foo = findPath(connlist , one, two); 
    if (foo == 1) { 
     /*One Match found!*/ 
     // do something with your connlist-Object; 
    } else if (foo == 2) { 
     /*Match one and two found!*/ 
     // do something with your connlist-Object; 
    } 
+0

안녕 난이 전송 캔트 목록을 처리 할 때까지 당신은 행 집합에있는 행 수를 모른다, 나는 하나와 둘만을 보낼 수 있습니다. ResultSetMetaData를 반환하는 값이 무엇인지 확인해야합니다. metaData = rs.getMetaData(); int columncount = metaData.getColumnCount(); mybe 칼럼 값을 검색하는 다른 함수가 있습니까? – shaharnakash

+0

레코드 집합에서 행의 열 값을 가져 오려면 – duffy356

+0

rs.get ...(); 시계를 doku! http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet.html 또는 예 : http://docs.oracle.com/javase/tutorial/jdbc /basics/retrieving.html – duffy356

0

귀하의 코드가 작동하지 않도록 두 가지 심각한 문제가 있습니다

  1. metaData.getColumnCount()는 (당연히) 의 수를 반환을 의 수가 아니다. 반환되는 열 수는 쿼리에서 선택한 항목에 따라 상수입니다. 이 경우 select *이므로 metaData.getColumnCount()은 정확히 conniction 테이블의 열 수입니다. 당신은 즉, 당신은 아마 또는 논리가 아닌 을 원하는
  2. parmeter로
    "SELECT * FROM conniction WHERE oneid="+one+" OR twoid="+two
관련 문제