bean的声明如下...... private Connection conn;
private int rec_count=0;
private ResultSet result=null;
....增加一个方法,主要是想得到记录集的记录数
public int getSelectrecordcount()
{  
try{
sql_str2="select count(*) as c from("+sql_str+")";

PreparedStatement select_stmt=conn.prepareStatement(sql_str2,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    result=select_stmt.executeQuery();
rec_count=Integer.parseInt(result.getString("c"));
//以上这句有问题
}catch(Exception e){System.out.println("统计记录数时出错,执行的统计语句是"+sql_str2);rec_count=-1;}
return rec_count;

}在测试页中,已对conn正确连接,sql_str也传入正常,但只要调用int i=mybean.getSelectrecordcount();就返回-1,不知何故?

解决方案 »

  1.   

    把你拼凑后的sql语句打印出来,看看是不是你预期的sql语句~
    sql_str2="select count(*) as c from("+sql_str+")";
    System.out.println(sql_str2);打印出来很明显就能看出对错
      

  2.   

    楼上的朋友,出错信息是这样的:
    统计记录数时出错,执行的统计语句是select count(*) as c from (select * from dic_bm),
    语句在sql/plus中执行没错阿,不知道为什么
      

  3.   

    我的意思是在catch语句把e的内容print出来,那样子才可以看得出来是什么错误啊
      

  4.   

    你这样写
    catch(Exception e)
    {System.out.println("统计记录数时出错,执行的统计语句是"+sql_str2);rec_count=-1;}
    根本无法看出来为什么错,你应该用e.printStackTrace();
    同时也打印出你的sql语句,System.out.println(sql_str2);这样才能看出来到底错在哪.
      

  5.   

    谢谢楼上二位,你们的指教太对了,出错信息我看到了,原来是这样的,在出错的这句rec_count=Integer.parseInt(result.getString("c"));
    前面应该加上一句: result.next();