-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にレコードが1つしかない場合は機能しますが、それ以上のレコードがある場合は機能しません。またrs.last()、メソッドはスキップされ、結果セットを終了します。1 つのレコードに対して実行するには、コメントする必要があります。使いたくありません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);
}
4

2 に答える 2

0

行数を決定するためだけに、すべてのデータを JDBC 経由で Java に返さないことを強くお勧めします。条件に一致する行数を知りたい場合は、select count(*) クエリを実行します。

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%')

次にJavaで:

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.");
于 2013-10-01T01:52:08.890 に答える
0

データベース内のレコードを数えることだけが目的の場合は、実際には の形式のクエリを使用する必要がありますSELECT count(*) FROM ...。上記の方法でクエリを実行する必要がある場合は、次のようにwhileループの外でカウンター変数を設定します。

int rowNum = 0;
while (rs.next()) {
    rowNum++;
}
System.out.println("Number of records: "+rowNum);
于 2013-10-01T01:49:17.017 に答える