Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在SQL查询中传递增强的for循环动态值?_Java_Sql - Fatal编程技术网

Java 我想在SQL查询中传递增强的for循环动态值?

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

我有一个列表集合值,如下所示,我希望在检索值时应在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);
}
试试这个:

 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);
}
    }