首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在执行statement.execute(sql)时关闭ResultSet

在执行statement.execute(sql)时关闭ResultSet
EN

Stack Overflow用户
提问于 2013-10-26 02:34:36
回答 1查看 77关注 0票数 0

在执行下面的代码时,我得到了错误java.sql.SQLException: ResultSet is java.sql.SQLException

公共类SavePoints {

代码语言:javascript
复制
public void extract(ResultSet rs)
{
     int c;
    try {
        while(rs.next())
        {
        c = rs.getInt("id");
       String d=rs.getString("name");
       String e=rs.getString("city");
       String f=rs.getString("state");
       String g=rs.getString("country");

    //Displaying values
     System.out.println("ID is:"+c+"\tName is:"+d+"\tCity is:"+e+"\tState is:"+f+"\tCountry is:"+g);
        }
    } catch (SQLException e1) {
        e1.printStackTrace();
    }

}

public static void main(String[] args) {
    SavePoints spobj=new SavePoints();
    try {
        Connection con=DriverManager.getConnection("jdbc:odbc:Divya", "SYSTEM", "tiger");
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery("select * from publishers");
        spobj.extract(rs);
        //DatabaseMetaData databaseMetaData = con.getMetaData();
        //System.out.println(databaseMetaData.getDriverMajorVersion());
        //Savepoint sp=con.setSavepoint("Deleting Rows");
        st.execute("delete from publishers where id=104");
        //con.rollback(sp);
        spobj.extract(rs);
    } catch (SQLException e) {

        e.printStackTrace();
    }


}

}

错误是什么?我找不到它。请让我知道。我是个新手..因此,请用简单的术语解释。我很感谢你的帮助。谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2013-10-29 20:35:42

您已调用% spobj.extract(rs);两次,

第一次执行此函数时,结果集将移到最后,因为您使用的是rs.next()

要实现这一点,您必须使用可滚动结果集

代码语言:javascript
复制
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
                                    ResultSet.CONCUR_READ_ONLY);

对于下一次spobj.extract(rs);的调用,rs.previous()会反转对结果集的调用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19597110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档