首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResultSet已请求

ResultSet已请求
EN

Stack Overflow用户
提问于 2017-05-17 13:41:17
回答 1查看 1K关注 0票数 1

我使用一个java程序来查询一个SQLite DB。我目前处于开发测试状态,希望测试特定的select查询。我有一个线程,我调用它来发出我的所有DB命令(生产者)和一个使用者线程来处理结果集。DBCommand线程(生产者)只需打开DB连接、创建一个新查询、发出查询、获取结果集并将其放在共享队列中并关闭连接:

代码语言:javascript
复制
String url = "jdbc:sqlite:" + Configuration.getInstance().getDbPath();
        // create a connection to the database
        conn = DriverManager.getConnection(url);

 try
        {
            if (conn.isValid(DB_TIMEOUT))
            {
                Statement stmt;
                try
                {
                    errorLog.info("Query Issued to Database: " + query);
                    stmt = conn.createStatement();
                    stmt.execute(query);
                    ResultSet rs = stmt.getResultSet();
                    if (rs != null)
                    {
                        try
                        {
                            TrendApp.resultSetProcQueue.put(new QueryResult(request, stmt.getResultSet()));
                        } catch (InterruptedException e)
                        {
                            errorLog.error("Failed to capture result set from query: " + e);
                        }

                    } else
                    {
                        try
                        {
                            TrendApp.resultSetProcQueue.put(new QueryResult(request, null));
                        } catch (InterruptedException e)
                        {
                            errorLog.error("Failed to capture result set from query: " + e);
                        }
                        errorLog.info(stmt.getUpdateCount() + " rows updated.");
                    }

                } catch (SQLException e)
                {
                    errorLog.error("Failed to issue database command: " + e);
                }

            }
        } catch (SQLException e)
        {
            errorLog.error("Database connection is not valid.");
        }

        closeDB();
    } else
    {
        errorLog.info("Database query is empty. No action performed.");
    }

}

请注意,这个程序的目的是从一组已经存在的表中提取元素,并将一个子集放入一个新表中,以便更容易地访问。因此,当我查询新表时,会得到"ResultSet已经请求“的错误。注意,在消费者端,目前还没有结果集处理(我还没有为它编写代码)。此错误也发生在程序重新启动之间。自从对我的新表进行最初的查询之后,它就没有工作了。

信息05-17-2017年09:41池-2-线程-4 DBExtend -查询数据库:选择不同的时间戳,machineId,ioType,ioId,子字段,从TrendPredef1111值machineId = 1111和ioType =2和ioId = "25“,时间戳<= 1495027659000000000和时间戳>= 1494943059000000000 错误05-17-2017 09:27:41池-2线程-4 DBExtend -未能发出数据库命令: java.sql.SQLException: ResultSet已被请求

知道我做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-17 13:49:27

您正在对结果集提出两个请求。

首先是创建Resultset对象的时候。

第二,在创建QueryResult对象时。

代之以传递"rs“对象。

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

https://stackoverflow.com/questions/44026590

复制
相关文章

相似问题

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