在执行下面的代码时,我得到了错误java.sql.SQLException: ResultSet is java.sql.SQLException
公共类SavePoints {
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();
}
}}
错误是什么?我找不到它。请让我知道。我是个新手..因此,请用简单的术语解释。我很感谢你的帮助。谢谢:)
发布于 2013-10-29 20:35:42
您已调用% spobj.extract(rs);两次,
第一次执行此函数时,结果集将移到最后,因为您使用的是rs.next()。
要实现这一点,您必须使用可滚动结果集
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);对于下一次spobj.extract(rs);的调用,rs.previous()会反转对结果集的调用
https://stackoverflow.com/questions/19597110
复制相似问题