无法从结果集中的数据库中获取所有数据

时间:2012-11-30 07:33:06

标签: java jsp playframework playframework-1.x

我从数据库中获取所有数据并将结果集存储到列表中。但无法获取所有数据。我想将数据存储在下拉列表中。我的代码如下。

public static void updateChallan(){
    ChallanNumber pd=null;
    int i=0;
    String customerName="";
    List<ChallanNumber> challanList= new ArrayList<ChallanNumber>();
    Connection con = DB.getConnection();
    try
    {
    String st="select CHALLAN_NUMBER,CUSTOMER_CODE,CHALLAN_DATE from DELIVERY_CHALLAN_DETAILS order by CHALLAN_NUMBER";
    Statement stmt=con.createStatement();
    ResultSet rs=stmt.executeQuery(st);
    while(rs.next())
    {
        String stCustName="select CUSTOMER_NAME from CUSTOMER_DETAILS where CUSTOMER_CODE='"+rs.getString(2)+"'";
        Statement stmtCustName=con.createStatement();
        ResultSet rsCustName=stmtCustName.executeQuery(stCustName);
        while(rsCustName.next()){
            customerName=rsCustName.getString(1);
        }

        customerName=rsCustName.getString(1);
        //System.out.println(customerName +" "+i);
        pd=new ChallanNumber(rs.getString(1),customerName,rs.getString(3));
        challanList.add(i,pd);
        i++;
    }
    }
    catch(Exception e)
    {
        //e.printStackTrace();
    }
    render(challanList);
}

Dropdownlish代码如下。

<select name="challanNumber" id="challanNumber">
              <option value="selected" selected="selected">ChallanNumber-CustomerCode-    Date</option>

              #{list challanList, as:'cl'}

              <option value="${cl.challanNumber}">${cl.challanNumber}(${cl.customercode}-${cl.challanDate})</option>

                #{/list}



            </select>

2 个答案:

答案 0 :(得分:1)

问题在于,当您收到异常时,未关闭 ConnectionResultSet。因此数据库已经耗尽了所有打开的游标

答案 1 :(得分:0)

您需要关闭所有打开的内容,这意味着语句,结果集。您可以在finally的{​​{1}}部分执行此操作,以确保正确关闭。

关闭语句时,链接到该语句的结果集也将关闭。

try/catch

此外,你应该阅读PlayFramework(here for Play2)的文档,有数据库的东西,以避免直接使用public static void updateChallan() throws Exception { ChallanNumber pd = null; int i=0; String customerName = ""; List<ChallanNumber> challanList= new ArrayList<ChallanNumber>(); Connection con = DB.getConnection(); Statement stmt = null; try { String st = "select CHALLAN_NUMBER,CUSTOMER_CODE,CHALLAN_DATE from DELIVERY_CHALLAN_DETAILS order by CHALLAN_NUMBER"; stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(st); while (rs.next()) { String stCustName = "select CUSTOMER_NAME from CUSTOMER_DETAILS where CUSTOMER_CODE='" + rs.getString(2) + "'"; Statement stmtCustName = con.createStatement(); try { ResultSet rsCustName = stmtCustName.executeQuery(stCustName); while (rsCustName.next()){ customerName = rsCustName.getString(1); } } finally { if (stmtCustName != null) stmtCustName.close(); } customerName = rsCustName.getString(1); //System.out.println(customerName +" "+i); pd = new ChallanNumber(rs.getString(1), customerName, rs.getString(3)); challanList.add(i, pd); i++; } } catch(Exception e) { e.printStackTrace(); } finally { if (stmt != null) stmt.close(); } render(challanList); } ResultSet,处理更高的结构,如域对象,框架将为您完成剩下的工作。

相关问题