0

我在 PostgreSQL 8.4 中有一张表:

DROP TABLE filedata_temp;

CREATE TABLE filedata_temp
(
num serial NOT NULL,
id integer,
kadnum character(25),
deleted character(3),
the_geom geometry,
status_id integer,
CONSTRAINT filedata_temp_pkey PRIMARY KEY (num)
)
WITH (
OIDS=FALSE
);
ALTER TABLE filedata_temp OWNER TO postgres;

简单数据:

在此处输入图像描述

在java中我做:

Class.forName("org.postgresql.Driver");
            Connection ce= null;
          ce = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgis","postgres","123456");
          Statement se = null;
          se = ce.createStatement();
Integer idn=null;
System.out.println("idnnull= "+idn);
ResultSet id=se.executeQuery("SELECT num FROM filedata_temp ORDER BY num DESC LIMIT 1");
    while(id.next()){
        idn=id.getInt("num");
        System.out.println("query= "+idn);
    }
    if(idn==null){
        idn=1;
    }
ce.close();
se.close();
System.out.println("idn= "+idn);

在控制台中我得到了这个:

idnnull= null
idn= 1

所以我没有得到System.out.println("query= "+idn);控制台。这意味着 ResultSet 是空的。但是如果我在 PostgreSQL 中进行这个查询,我会得到一个正常的响应。怎么了?

4

2 回答 2

1

结果集文档说,如果新的当前行有效,则 next 方法返回 true,如果没有更多行,则返回 false。

所以查询结果不行。检查您的数据库连接,也许您已连接到具有空表 filedata_temp 或一些相关问题的其他数据库。

于 2012-10-23T11:25:32.913 回答
1

跟着这些步骤:

在上面的程序中,将查询更改为“SELECT * FROM filedata_temp”并将 id.getInt 更改为 id.getObject。看看你是否至少从这个查询中得到了一些东西。如果这提供了表格中的所有列,那么您的连接、数据库、表格一切都很好。

然后接下来将查询更改为“SELECT num FROM filedata_temp”并使用 id.getObject。看看您现在是否能够获得所有行的 num 值。

如果这可行,则添加 order by 子句。当这有效时,然后去限制和其他事情。

于 2012-10-23T12:03:02.033 回答