如下 :我想让 rs.getLong(1) 输出两遍,一次最前面,一次最后面。
可是 不行,去了最后一句 就可以。不知道为什么??
while(rs.next())
{out.print("<tr>");
out.print("<td width=100>"+rs.getLong(1)+"</td>");
out.print("<td width=50>"+rs.getString(2)+"</td>");
out.print("<td width=100>"+rs.getString(3)+"</td>");
out.print("<td width=50>"+rs.getInt("user_age")+"</td>");
out.print("<td width=50>"+rs.getString("user_sex")+"</td>");
out.print("<td width=100>"+rs.getString("user_address")+"</td>");
out.print("<td width=100>"+rs.getString("user_telephone")+"</td>");
out.print("<td width=100>"+rs.getString("user_addtime")+"</td>");
out.print("<td width=100>"+rs.getLong(1)+"</td>");//------
out.print("</tr>");
}

解决方案 »

  1.   

    默认的 ResultSet 对象不可更新,仅有一个向前移动的指针。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行---------------------最好是放到一个变量中,反复用
      

  2.   

    好象是微软的驱动有这毛病, 用jtds.
    out.print是IO操作,极慢, 你这样占用了连接很久
    不能这么干, 应该把数据读出来后放入集合中, 然后立即释放连接.
    List result = new ArrayList();
    while(rs.next())
    {
       User u = new User(); //一个dto
       u.setAge(rs.get(user_age));
       ....把数据都放进dto
       result.add(u);  // dto放进list
    }
    然后, 关闭数据库连接
    接下来, List中数据你爱怎么读就怎么读
      

  3.   

    晕了  我用JDBC从没遇到那个问题啊  可以2次取RS的啊
      

  4.   

    可以那么取,理论上没问题,不过设个变量就更好了!
    放在bean里用List取也不错。
      

  5.   

    rs.getString(1)...
    它只能一步一步的往下走..不可能再从回到第一个去走...
    它只走一遍...从1走到2走到3...不可能直接回到1重新来过...
      

  6.   


    rs.getString(1)...
    它只能一步一步的往下走..不可能再从回到第一个去走...
    它只走一遍...从1走到2走到3...不可能直接回到1重新来过...right
      

  7.   

    ray_1981(雷)
    放到一个变量中,就可以反复用了!---------------------------------------------------------------------------------
    这谁都知道...
    可如果值起变化的话呢..?
      

  8.   

    这应该和JDBC的版本有关系.尝试一下用连接池应该不会出现这个问题
      

  9.   

    可以把记录集的类型改成可前后移动的,
    在创建statement对象时确定resultSet的类型,
    Statement st=connectin.creatStatement(xxx,xxx);
    ResultSet rs=st.excuteQuery(sql);
    那两个xxx忘记是什么了,是两个整型常量,自己去查一下;
      

  10.   

    你可以用Preperstatment对象,他好象可以.
      

  11.   

    指定ResultSet为ResultSet.TYPE_SCROLL_INSENSITIVE就可以了。
      

  12.   

    楼主用的 连接协议不知道是不是 JDBC:ODBC 。。
    如果是,建议使用其他的驱动。。
    我使用 JDBC:ODBC 的时候,也遇到过这样的问题
      

  13.   

    你可以将指针返回到首位rs.beforeFirst();再取rs.getLong(1)
      

  14.   

    while(rs.next())
    {
    long str = rs.getLong(1);
    out.print("<tr>");
    out.print("<td width=100>"+ str +"</td>");
    out.print("<td width=50>"+rs.getString(2)+"</td>");
    out.print("<td width=100>"+rs.getString(3)+"</td>");
    out.print("<td width=50>"+rs.getInt("user_age")+"</td>");
    out.print("<td width=50>"+rs.getString("user_sex")+"</td>");
    out.print("<td width=100>"+rs.getString("user_address")+"</td>");
    out.print("<td width=100>"+rs.getString("user_telephone")+"</td>");
    out.print("<td width=100>"+rs.getString("user_addtime")+"</td>");
    out.print("<td width=100>"+ str +"</td>");//------
    out.print("</tr>");
    }这样行不