Java 我想在SQL查询中传递增强的for循环动态值?
我有一个列表集合值,如下所示,我希望在检索值时应在sql查询中传递Java 我想在SQL查询中传递增强的for循环动态值?,java,sql,Java,Sql,我有一个列表集合值,如下所示,我希望在检索值时应在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,YearI
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);
}
试试这个:
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();
}
}
除了已经说过的话之外: 如果您知道每个查询最多只能得到一个结果,我建议您使用if(rs.next())而不是while(rs.next()) 此外,在打印出年份ID后,您可以添加以下内容:
统计clearParameters()。
虽然在这种情况下不是绝对必要的,但它不会有什么坏处(您可以阅读clearParameters以更好地了解它的用法)。typo:firts row obl而不是obs
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();
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);
}
}