首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在UCanAccess ResultSet上使用UCanAccess()方法

尝试在UCanAccess ResultSet上使用UCanAccess()方法
EN

Stack Overflow用户
提问于 2015-07-28 15:44:54
回答 1查看 1.4K关注 0票数 1

我正在处理来自Facebook的分批信息。我已经决定,达到我想要的结果的最好方法是有两个循环,而这两个循环都是关于我的结果集是否有.next() .。

问题是ResultSets没有hasNext()方法,只有next()。因此,在第一个.next()方法使用.previous()之后,我尝试返回,并得到了一个“不支持的特性”错误。

所以我在第二个.next()之后又试了一次,上面写着同样的话.

您似乎不能在.previous()下使用UCanAccess。

例外是-

代码语言:javascript
复制
net.ucanaccess.jdbc.UcanaccessSQLException: feature not supported
at net.ucanaccess.jdbc.UcanaccessResultSet.previous(UcanaccessResultSet.java:933)

代码部分-

代码语言:javascript
复制
int i = 1;
        try {
        idsLoop:while(rs.next()){
            if(i==1){
                rs.previous();
            }
            if(i<50){
                idsForRequest.add(rs.getString("Expr1"));
                i++;
                }
                else{
                    i=1;
                    break idsLoop; 
                }

顺便说一句,如果有人想知道我为什么要这样做,那是因为我不想一次批超过50页。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 16:52:11

JDBC语句对象默认为ResultSet.TYPE_FORWARD_ONLY下的JDBC (如果不是全部的话,大多数JDBC驱动程序),所以如果您执行类似的操作,rs.previous()将失败。

代码语言:javascript
复制
try (Statement st = conn.createStatement()) {
    try (ResultSet rs = st.executeQuery(sql)) {
        // ...
        rs.previous();  // <- error

但是,如果在创建语句对象时指定了一个可滚动的ResultSet .

代码语言:javascript
复制
try (Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
    try (ResultSet rs = st.executeQuery(sql)) {
        // ...
        rs.previous();  // <- no error

..。那么rs.previous()就能工作了。

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

https://stackoverflow.com/questions/31681200

复制
相关文章

相似问题

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