程序拼出来的sql语句放到pl/sql上能查到数据,但是在程序中返回的resultset.next()总是为false.
ps:数据库中的数据很多,我的这个查询在pl/sql上要50多秒才能出数据。我想会不会是时间太长的原因导致我的程序没有拿到数据。
     请高手指点,急急啊

解决方案 »

  1.   

     你这个就不好说了,要检查你代码的,驱动,url地址。数据库jar,端口。你都写好了吗?
      

  2.   

    ResultSet是您访问数据库返回的数据表,也就是结果集合,一开始是处于第一行之前,即beforeFirst,第一次使用next()就将指针指向返回结果集的第一行。每使用一次next(),指针就指向下一行,这时候你就可以使用rs.getObject()或者getInt()或者getString()之类的方法返回该行的某一个字段的值,也就是getObject()方法里面的参数可以传递索引(索引由1开始),即如果你的数据库第一列的数据叫id,那你可以用getObject("id")或者getObject(1)得到你的rs目前指着的那一条数据的该列的值。当next()成功的时候其实会返回一个布尔值true,当指针指到最后一行的后面时候,即afterLast()就返回布尔值false。 所以第一次调用next()的时候应该是指向第一行数据。next()在指针指向第一行之前到最后一行之间的返回true的,也就是当你的指针已经指向到最后一行的数据集了,再用一次next()是返回true的,但此时再用一次next()就是false,因为执行已经到最后一行的后面了(也就是afterLast)
    你看看你是不是这个方法用错了
      

  3.   

    首先,你要确保你能连上数据库吗?写一个测试方法
    /*
     * 测试 DB工具类
     */
    public static void main(String[] args) {
    System.out.println(getConnection());
    }
      

  4.   


    1. 是否查询数据成功了。。
    2. 是否数据量太大了。。你在PL/SQL要查50多秒、?难道resultSet太大导致内存溢出了?使用分页控制一下
      

  5.   

    50 秒本身就是一个问题。
    换个响应快的SQL试试看先。
      

  6.   

    问题解决了,是字符编码的问题。数据库是iso8859-1