2013-11-27 90 views
0

如果我正在運行下面的一段代碼,rs.next應該從表的第一行開始返回值,而不是從第二行返回值。rs.next()不返回表的第一個值

 String val = "select bl.book_id,bl.branch_id, bl.card_no,bl.date_out, bl.due_date ,concat(b.fname,' ',b.lname) as borrower from book_loans bl inner join borrower b on bl.card_no=b.card_no where bl.book_id like '%"+lm.getBook_id()+"%' and bl.card_no like '%"+lm.getCard()+"%'"; 
      rs=st.executeQuery(val); 
      if(rs.next()) 
      { 
       for(int a=0;rs.next();a++) 
       { 
        System.out.println("hello# "+a); 
        lm.book_ids.add(rs.getString(1)); 
        lm.branch_id.add(rs.getInt(2)); 
        lm.cards.add(rs.getString(3)); 
        lm.date_out.add(rs.getString(4)); 
        lm.due_date.add(rs.getString(5)); 
       } 
       for(int a=0;a<lm.branch_id.size();a++) 
       { 
        System.out.println(lm.book_ids.get(a)); 
        System.out.println(lm.branch_id.get(a)); 
        System.out.println(lm.cards.get(a)); 
        System.out.println(lm.date_out.get(a)); 
        System.out.println(lm.due_date.get(a)); 
       } 
       return 1; 
      } 
      return 2; 

我正在MySQL中運行確切的查詢,並給出正確的值,但它不在此代碼中。它在SQL

簿ID分公司身份證顯示沒有日期超出截止日期

72127317 1 9009 2013年11月25日2013年12月9日

72127317 3 9009 2013年11月25日2013-12 -09

,並在這裏重新調諧其如下

你好#0 2013年11月25日 2013年12月9日

回答

2

我相信你的問題是在這裏

if(rs.next()) // get the first record 
{ 
for(int a=0;rs.next();a++) // get the second (and later) records.... 

你可以使用一個do while循環這樣的,而不是 -

int a = 0; 
do 
{ 
    System.out.println("hello# "+a); 
    lm.book_ids.add(rs.getString(1)); 
    lm.branch_id.add(rs.getInt(2)); 
    lm.cards.add(rs.getString(3)); 
    lm.date_out.add(rs.getString(4)); 
    lm.due_date.add(rs.getString(5)); 
    a++; 
} while (rs.next()); 
+0

完美!它的工作..謝謝。然而,同樣的事情在另一個地方工作。我不知道爲什麼不在這裏。 – user3011373

0

我覺得你的問題是在條款也。 您可以試試

int a = 0; 
    while (rs.next()){ 
     System.out.println("hello# "+a); 
     lm.book_ids.add(rs.getString(1)); 
     lm.branch_id.add(rs.getInt(2)); 
     lm.cards.add(rs.getString(3)); 
     lm.date_out.add(rs.getString(4)); 
     lm.due_date.add(rs.getString(5)); 
     a++; 

    } 

do ... while子句可能會導致nullPoint異常。 ResultSet cursor is initially positioned before the first row. 而你需要爲你的sql添加命令。

+0

做..雖然工作完美,也沒有打擾與查詢以及 – user3011373

+0

當結果集爲空做...儘管可能無法如此完美的工作。使用while ...不打擾與if(rs.next ) –

相關問題