2013-10-01 2 views
-1

도움말 !!!!!!! DB에서이 쿼리와 함께 2 개의 행이 있습니다. 아래의 코드와 결과 집합으로 행 수 얻기

SELECT D.DEALER_CODE 
FROM SCOTT.T_DEALERSHIP D,SCOTT.T_DEALER_BILLING DB 
WHERE D.DEALER_CODE = DB.DEALER_CODE 
    AND DEALER_NAME LIKE 'XTIME%' 
    AND (RNR_CUST_NUM = '546' OR RNR_CUST_NUM = '43356'OR RNR_CUST_NUM = '7637055' OR RNR_CUST_NUM ='7637055' OR RNR_CUST_NUM IS NULL) 
    AND (RCI_STORE_NUMBER IS NULL OR RCI_STORE_NUMBER = '05') 
    AND (RCI_AREA_NUMBER = '01'OR RCI_AREA_NUMBER IS NULL) 
    AND (RCI_DEALER_NUMBER IS NULL AND DEALER_Address1 LIKE UPPER('1500 ORACLE%')         
    AND DEALER_CITY =UPPER('BAKERSFIELD') AND DEALER_ZIP LIKE'6%') 


, 나는 DB에서 2 개 레코드가 경우에만 1 행을 얻을. DB에 하나의 레코드 만있을 때 작동하지만 더 많은 레코드가있는 경우에는 작동하지 않습니다. 또한 rs.last() 메서드는 건너 뛴 다음 결과 집합을 종료합니다. 하나의 레코드에 대해 실행하려면 주석을 달아야합니다. COUNT을 사용하고 싶지 않습니다. 당신이 원하는 모든 데이터베이스의 레코드를 계산하는 경우

ResultSet rs = stmt.executeQuery(sql1); 
System.out.println("" + sql1); 

while(rs.next()) { 
    rs.last(); 
    int Rows = rs.getRow(); 
    System.out.println("Rows are " + Rows); 
} 
+2

'마지막()'상태 : 당신이 원하는 마십시오 object.''이 ResultSet의 마지막 행으로 커서를 이동? –

+0

아닙니다. 예상치 못한 결과가 나오면 원하지 않습니다. 내가 원한 것은 DB의 레코드 수입니다. 0/1/1보다 큰 경우. 내가 코멘트하면 프로그램이 실행되지만 두 개 이상의 레코드가있을 때 정확한 카운트를 제공하지 않습니다. – user2805281

+3

왜 계산하지 않으시겠습니까? 그것이 바로 당신이 필요로하는 것입니다. 따라서 귀하의 질의가 백만 줄과 일치하는 경우, 귀하의 앱에 백만 개를 반환하여 그 중 몇 개가 있는지 계산하고 싶습니까? – Brandon

답변

0

는, 당신은 정말 형태 SELECT count(*) FROM ...의 쿼리를 사용해야합니다. 당신이 정말로 쿼리 당신이 위의 방법을 수행해야하는 경우에, 당신은 다음처럼 while 루프 외부 카운터 변수를 설정하려면 :

int rowNum = 0; 
while (rs.next()) { 
    rowNum++; 
} 
System.out.println("Number of records: "+rowNum); 
+0

시도했습니다. 이것 역시 .. 행운을 빌어 요. (int rowcount = 0; while (rs.next()) { String DealerCode = rs.getString ("DEALER_CODE"); System.out.println ("Dealer Code" DealerCode); int 행 = 행 개수 ++; if (행 == 1) { stmt.getConnecti 에(); *** upda – user2805281

+0

각 반복마다 코드를 실행하려면이를 반영하도록 질문을 업데이트 할 수 있습니다.다시 한번 돌아가서 첫 번째 줄에서'if (Rows == 1)'비트를 찾으려면,'++ rowcount'를 사용하여'Rows'를 설정해야합니다. 'rowcount ++ '대신에 count 변수를 사용하면됩니다.'itlcount ++; if (rowcount == 1) {...}'. – Josh

0
난 강력 JDBC를 통해 단지에 자바에 대한 모든 데이터를 반환에 추천

행 수를 결정하십시오. 당신은 단지 조건에 일치하는 행 수를 알고 싶다면, 다음 선택 카운트를 할 (*) 쿼리 SQL에서

: 자바에서 다음

SELECT COUNT(*) 
FROM SCOTT.T_DEALERSHIP D,SCOTT.T_DEALER_BILLING DB 
WHERE D.DEALER_CODE = DB.DEALER_CODE 
    AND DEALER_NAME LIKE 'XTIME%' 
    AND (RNR_CUST_NUM = '546' OR RNR_CUST_NUM = '43356'OR RNR_CUST_NUM = '7637055' OR RNR_CUST_NUM ='7637055' OR RNR_CUST_NUM IS NULL) 
    AND (RCI_STORE_NUMBER IS NULL OR RCI_STORE_NUMBER = '05') 
    AND (RCI_AREA_NUMBER = '01'OR RCI_AREA_NUMBER IS NULL) 
    AND (RCI_DEALER_NUMBER IS NULL AND DEALER_Address1 LIKE UPPER('1500 ORACLE%') 
    AND DEALER_CITY =UPPER('BAKERSFIELD') AND DEALER_ZIP LIKE'6%') 

:

ResultSet rs = stmt.executeQuery(sql1); 
System.out.println("" + sql1); 

int rows = 0; 
if(rs.next()) { 
    rows = rs.getInt(); 
} 
System.out.println("Rows are " + rows); 

편집 OP의 의견을 바탕으로

카운트와 함께 데이터베이스에서 값을 가져 오려면 값을 스캔하기 만하면됩니다.

SQL :

SELECT D.DEALER_CODE 
FROM SCOTT.T_DEALERSHIP D,SCOTT.T_DEALER_BILLING DB 
WHERE D.DEALER_CODE = DB.DEALER_CODE 
    AND DEALER_NAME LIKE 'XTIME%' 
    AND (RNR_CUST_NUM = '546' OR RNR_CUST_NUM = '43356'OR RNR_CUST_NUM = '7637055' OR RNR_CUST_NUM ='7637055' OR RNR_CUST_NUM IS NULL) 
    AND (RCI_STORE_NUMBER IS NULL OR RCI_STORE_NUMBER = '05') 
    AND (RCI_AREA_NUMBER = '01'OR RCI_AREA_NUMBER IS NULL) 
    AND (RCI_DEALER_NUMBER IS NULL AND DEALER_Address1 LIKE UPPER('1500 ORACLE%') 
    AND DEALER_CITY =UPPER('BAKERSFIELD') AND DEALER_ZIP LIKE'6%') 

자바 :

ResultSet rs = stmt.executeQuery(sql1); 
System.out.println("" + sql1); 

List<String> rows = new ArrayList<String>(); 
while(rs.next()) { 
    rows.add(rs.getString()); 
} 
System.out.println("There are " + rows.size() + " rows."); 
+0

처음에는 카운트를 사용했습니다. 하지만 DB에서이 값을 가져와야합니다 - Dealer_Code (rs.getString ("DEALER_CODE"). 카운트를 사용하면이 열을 가져올 수 없을 수도 있습니다. 도와주세요 – user2805281

+0

게시 한 코드가 아닙니다. 값이 필요하고 카운트가 필요하면 0에서 카운터를 시작하고 반복 할 때마다 카운트를 시작하거나 끝에있는 콜렉션 크기를 확인하십시오 – Brandon

+0

요구 사항을 모두 충족하는 솔루션으로 업데이트했습니다 – Brandon

관련 문제