2014-01-13 56 views
0

我有一個像下面這樣的List Collection值,我希望檢索值時應該通過sql查詢。我想通過增強for循環動態值在SQL查詢?

List obl = new ArrayList(); 
obs.add(1234); 
obs.add(1235); 
obs.add(1236); 
obs.add(1237); 

這裏問題只是第一個值得通過?我希望所有的值都應該傳遞並且適當的輸出應該得到。

for(Object obls:obl){ 
    String sql2 ="select Student_Name,FeesHead,Amount,BankName,YearID from test where ReceiptNo = '"+obls+"'";            
    stat = con.prepareStatement(sql2); 
    rs=stat.executeQuery(); 
    rs.next(); 
    String StudentName = rs.getString(1); 
    String FeesHead  = rs.getString(2); 
    String Amount  = rs.getString(3); 
    String BankName  = rs.getString(4); 
    Integer LYearID  = rs.getInt(5); 
    System.out.println("Fees Head"+FeesHead); 
    System.out.println("Amount"+Amount); 
    System.out.println("Bank Name"+BankName); 
    System.out.println("Year ID --"+LYearID); 
} 
+0

錯字:firts row obl而不是obs – PeterRing

回答

0

添加到已經取得的說: 我建議你使用if(rs.next()),而不是同時(RS。 next()),如果你知道每個查詢最多隻能得到一個結果。

此外,在打印年份ID後,您可以添加:
stat.clearParameters()。
雖然在這種情況下不是絕對必要的,但它不會受到傷害(您可以閱讀clearParameters以更好地瞭解其用法)。

0

試試這個:

String sql2 = "select Student_Name,FeesHead,Amount,BankName,YearID from test where ReceiptNo = ?"; 
PreparedStatement stat = con.prepareStatement(sql2); 

try { 
    for(Object obl:obl){ 
    stat.setObject(1, obl); 
    rs=stat.executeQuery(); 
    rs.next(); 
    String StudentName = rs.getString(1); 
    String FeesHead  = rs.getString(2); 
    String Amount  = rs.getString(3); 
    String BankName  = rs.getString(4); 
    Integer LYearID  = rs.getInt(5); 
    System.out.println("Fees Head"+FeesHead); 
    System.out.println("Amount"+Amount); 
    System.out.println("Bank Name"+BankName); 
    System.out.println("Year ID --"+LYearID); 
    } 
} finally { 
    if (stat != null) { 
     stat.close(); 
    } 
} 
0
StringBuilder sb = new StringBuilder("("); 
for (Object o : obl) { 
    sb.append("'").append(o).append("',"); 
} 
sb.deleteCharAt(sb.length() - 1); 
sb.append(")"); 

String sql2 ="select Student_Name,FeesHead,Amount,BankName,YearID from test where ReceiptNo in " + sb.toString(); 
Statement stat = con.prepareStatement(sql2); 
ResultSet rs=stat.executeQuery(sql2); 
while (rs.next()) { 
    String StudentName = rs.getString(1); 
    String FeesHead  = rs.getString(2); 
    String Amount  = rs.getString(3); 
    String BankName  = rs.getString(4); 
    Integer LYearID  = rs.getInt(5); 
    System.out.println("Fees Head"+FeesHead); 
    System.out.println("Amount"+Amount); 
    System.out.println("Bank Name"+BankName); 
    System.out.println("Year ID --"+LYearID); 
} 
stat.close(); 
rs.close(); 
0
for(Object obls:obl){ 
     String sql2 ="select Student_Name,FeesHead,Amount,BankName,YearID from test where ReceiptNo = '"+obls+"'";            
     stat = con.prepareStatement(sql2); 
     rs=stat.executeQuery(); 
     while(rs.next()) 
{ 
     String StudentName = rs.getString(1); 
     String FeesHead  = rs.getString(2); 
     String Amount  = rs.getString(3); 
     String BankName  = rs.getString(4); 
     Integer LYearID  = rs.getInt(5); 
     System.out.println("Fees Head"+FeesHead); 
     System.out.println("Amount"+Amount); 
     System.out.println("Bank Name"+BankName); 
     System.out.println("Year ID --"+LYearID); 
} 
    }