java rs.last_如何使用ResultSet对象的last()以及first()方法?何为“只转发结果集”?...

//下面的code很简单,但就是报错,我……

//环境 :MS Windows 2k Pro + J2SDK1.4 Beta3 +JCreator25

import java.util.*;

import java.sql.*;

public class DataSet

{

Connection conn;

Statement  stmt;

ResultSet  rs;

int rowCount = 0;

/** -------------Database constructor-----------

* constructor takes server providing database

*/

public DataSet()

{

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

String url=new String("jdbc:oracle:thin:@127.0.0.1:1521:ora8");

conn = DriverManager.getConnection(url,"scott","tiger");

stmt = conn.createStatement();

} catch (ClassNotFoundException e) {e.printStackTrace();}

catch (SQLException se) { se.printStackTrace(); }

}

/** ------------------close-------------

* closes connection to database server

*/

public void close(boolean rsexit)

{

try

{

if(rsexit)

rs.close();

stmt.close();

conn.close();

}catch(SQLException closeE){closeE.printStackTrace();}

}

public void go()

{

try{

rs = stmt.executeQuery("SELECT * FROM sm_employee");

if(rs.last())//第46行!

rowCount = rs.getRow();

}catch(SQLException e){e.printStackTrace();}

System.out.print(rowCount);

}

public static void main(String[] args)

{

DataSet ds = new DataSet();

ds.go();

ds.close(true);

}

}

/*提示信息如下

java.sql.SQLException: 对只转发结果集的无效操作: last

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)

at oracle.jdbc.driver.BaseResultSet.last(BaseResultSet.java:90)

at DataSet.go(DataSet.java:44)

at DataSet.main(DataSet.java:55)

*/

|

转发==forwardOnly? if you want to use last(), do not use forward only cursor

by default, with createStatement(), you will get a forwardonly readonly resultset, try

stmt = conn.createStatement(TYPE_SCROLL_INSENSITIVE , ResultSet.CONCUR_READ_ONLY);

|

要设置ResultSet的可滚动性,需要指定生成Statement时的相应值:

Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)

其中,前一个参数有三种选择:ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.TYPE_FORWARD_ONLY;

后一个有两种:ResultSet.CONCUR_READ_ONLY,ResultSet.CONCUR_UPDATABLE

|

你的stmt = conn.createStatement();结果集不用用LAST方法,必须加参数;

stmt = conn.createStatement(ResultSet.....here,some code...);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值