首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java查询执行,读取ResultSet行时出现的问题

Java查询执行,读取ResultSet行时出现的问题
EN

Stack Overflow用户
提问于 2013-11-21 03:06:35
回答 3查看 195关注 0票数 0

我正在编写简单的Java代码,我必须在Postgresql数据库上执行一个SQL查询。这个数据库的结果(我手动检查过)是一个由一个列和两个整数组成的简单表,如下所示:

我的问题是我找不到阅读这两行的方法。我的阅读代码是:

_conn.setReadOnly(假); ( _conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); _stmt.setFetchSize(100); List< Short > lista =新的List< Short >(); _rs =_stmt.executeQuery(查询); 时间(_rs.next()) { Lista.add((短)_rs.getInt(1)); }

这段代码只读取第一行,但没有办法让它读取第二行。短列表"lista“总是包含一个元素。这就像如果ResultSet不继续读取第二行.

如何读取这两行?

编辑:我尝试过使用ArrayList,但它不起作用。我为_conn连接和_stmt语句添加了代码部分。以下是查询:

代码语言:javascript
复制
            SELECT COUNT(bffK.biological_function_feature_oid) 
        FROM biological_function_feature AS bff 
        INNER JOIN biological_function_feature_unfolded AS bffu 
        ON bff.biological_function_feature_oid = bffu.term_oid 
        INNER JOIN (    SELECT DISTINCT ON (g.gene_oid, bffu.ancestor_oid) g.gene_oid AS ance_gene, bffu.ancestor_oid AS ance_oid, mf.feature_name AS feature_name, mf.feature_id AS feature_id, ef.name AS evidence, qf.name AS qualifier  
                FROM gene2biological_function_feature AS g2bff  
                INNER JOIN biological_function_feature AS bff  
                ON g2bff.biological_function_feature_oid = bff.biological_function_feature_oid   
                INNER JOIN biological_function_feature_unfolded AS bffu  
                ON bffu.term_oid = bff.biological_function_feature_oid  
                INNER JOIN metadata.feature AS mf ON bff.feature_type = mf.feature_id   
                INNER JOIN gene AS g ON g2bff.gene_oid = g.gene_oid  
                LEFT JOIN flag.evidence_flags AS ef ON g2bff.evidence = ef.id  
                LEFT JOIN flag.qualifier_flags AS qf ON g2bff.qualifier = qf.id     
                LEFT JOIN flag.inferred_flags AS fif ON fif.id = g2bff.inferred    
                WHERE g.gene_oid=(4060969) 
                AND (bff.is_obsolete NOT IN ('t') OR bff.is_obsolete IS NULL)    
                AND (g.is_obsolete NOT IN ('t') OR g.is_obsolete IS NULL)
                AND distance=1   
                 UNION 
                SELECT DISTINCT ON (g.gene_oid, bff.biological_function_feature_oid)   
                g.gene_oid AS ance_gene, bff.biological_function_feature_oid AS ance_oid, 
                mf.feature_name AS feature_name, mf.feature_id AS feature_id,  
                ef.name AS evidence, 
                qf.name AS qualifier   
                FROM gene2biological_function_feature AS g2bff  
                INNER JOIN biological_function_feature AS bff  
                ON g2bff.biological_function_feature_oid = bff.biological_function_feature_oid    
                INNER JOIN metadata.feature AS mf ON bff.feature_type = mf.feature_id    
                INNER JOIN gene AS g ON g2bff.gene_oid = g.gene_oid  
                LEFT JOIN flag.evidence_flags AS ef ON g2bff.evidence = ef.id  
                LEFT JOIN flag.qualifier_flags AS qf ON g2bff.qualifier = qf.id     
                LEFT JOIN flag.inferred_flags AS fif ON fif.id = g2bff.inferred    
                WHERE g.gene_oid=(4060969) 
                AND (bff.is_obsolete NOT IN ('t') OR bff.is_obsolete IS NULL)   
                AND (g.is_obsolete NOT IN ('t') OR g.is_obsolete IS NULL)  
                AND ef.name NOT IN ('IEA', 'ND') 
            ) 
        AS unf ON unf.ance_oid = bffu.ancestor_oid 
        INNER JOIN gene AS gK on gk.Gene_oid=ance_gene 
        INNER JOIN biological_function_feature AS bffK 
        ON bffK.biological_function_feature_oid = bffu.ancestor_oid 
        LEFT JOIN flag.evidence_flags AS efK  
        ON evidence = efK.name 
        LEFT JOIN flag.qualifier_flags AS qfK  
        ON qualifier = qfK.name 
        WHERE bffu.distance=1 AND (bff.biological_function_feature_oid) IN (217538)
        AND evidence NOT IN ('IEA', 'ND')   
        UNION 
        SELECT COUNT(bffK.biological_function_feature_oid) 
        FROM biological_function_feature AS bff 
        INNER JOIN biological_function_feature_unfolded AS bffu 
        ON bff.biological_function_feature_oid = bffu.term_oid 
        INNER JOIN (    SELECT DISTINCT ON (g.gene_oid, bffu.ancestor_oid) g.gene_oid AS ance_gene, bffu.ancestor_oid AS ance_oid, mf.feature_name AS feature_name, mf.feature_id AS feature_id, ef.name AS evidence, qf.name AS qualifier  
                FROM gene2biological_function_feature AS g2bff  
                INNER JOIN biological_function_feature AS bff  
                ON g2bff.biological_function_feature_oid = bff.biological_function_feature_oid   
                INNER JOIN biological_function_feature_unfolded AS bffu  
                ON bffu.term_oid = bff.biological_function_feature_oid  
                INNER JOIN metadata.feature AS mf ON bff.feature_type = mf.feature_id   
                INNER JOIN gene AS g ON g2bff.gene_oid = g.gene_oid  
                LEFT JOIN flag.evidence_flags AS ef ON g2bff.evidence = ef.id  
                LEFT JOIN flag.qualifier_flags AS qf ON g2bff.qualifier = qf.id     
                LEFT JOIN flag.inferred_flags AS fif ON fif.id = g2bff.inferred    
                WHERE g.gene_oid=(4060969) 
                AND (bff.is_obsolete NOT IN ('t') OR bff.is_obsolete IS NULL)    
                AND (g.is_obsolete NOT IN ('t') OR g.is_obsolete IS NULL)
                AND distance=1   
                 UNION 
                SELECT DISTINCT ON (g.gene_oid, bff.biological_function_feature_oid)   
                g.gene_oid AS ance_gene, bff.biological_function_feature_oid AS ance_oid, 
                mf.feature_name AS feature_name, mf.feature_id AS feature_id,  
                ef.name AS evidence, 
                qf.name AS qualifier   
                FROM gene2biological_function_feature AS g2bff  
                INNER JOIN biological_function_feature AS bff  
                ON g2bff.biological_function_feature_oid = bff.biological_function_feature_oid    
                INNER JOIN metadata.feature AS mf ON bff.feature_type = mf.feature_id    
                INNER JOIN gene AS g ON g2bff.gene_oid = g.gene_oid  
                LEFT JOIN flag.evidence_flags AS ef ON g2bff.evidence = ef.id  
                LEFT JOIN flag.qualifier_flags AS qf ON g2bff.qualifier = qf.id     
                LEFT JOIN flag.inferred_flags AS fif ON fif.id = g2bff.inferred    
                WHERE g.gene_oid=(4060969) 
                AND (bff.is_obsolete NOT IN ('t') OR bff.is_obsolete IS NULL)   
                AND (g.is_obsolete NOT IN ('t') OR g.is_obsolete IS NULL)  
                AND ef.name IN ('IEA', 'ND') 
            ) 
        AS unf ON unf.ance_oid = bffu.ancestor_oid 
        INNER JOIN gene AS gK on gk.Gene_oid=ance_gene 
        INNER JOIN biological_function_feature AS bffK 
        ON bffK.biological_function_feature_oid = bffu.ancestor_oid 
        LEFT JOIN flag.evidence_flags AS efK  
        ON evidence = efK.name 
        LEFT JOIN flag.qualifier_flags AS qfK  
        ON qualifier = qfK.name 
        WHERE bffu.distance=1 AND (bff.biological_function_feature_oid) IN (217538)
        AND evidence IN ('IEA', 'ND')
EN

回答 3

Stack Overflow用户

发布于 2013-11-21 03:27:32

列表是一个接口,请尝试使用类似于ArrayList的方法

代码语言:javascript
复制
List< Short > lista = new ArrayList< Short >();

_rs = _stmt.executeQuery(query);

     while (_rs.next()) {

lista.add((short)_rs.getShort(1));

}
票数 1
EN

Stack Overflow用户

发布于 2013-11-21 17:08:20

List是一个接口,因此不能直接实例化,而不能像ArrayList那样使用它的实现之一。还请注意,count是PG中的关键字,因此避免使用关键字作为标识符。工作解决方案:

代码语言:javascript
复制
pst = connection.prepareStatement("SELECT * FROM demo");
List<Short> lista = new ArrayList<Short>();
rs = pst.executeQuery();

while (rs.next()) {
   lista.add((short)rs.getInt(1));
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-21 03:14:40

这似乎不是语法上的问题。在对数据库运行查询时,也会得到一行吗?也许您也可以发布SQL查询。

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

https://stackoverflow.com/questions/20111667

复制
相关文章

相似问题

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