JDBC Java的问题

时间:2012-10-23 11:09:53

标签: java postgresql jdbc

我在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;

简单数据:

enter image description here

在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中进行此查询,我会得到正常的响应。怎么了?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

请按照以下步骤操作:

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

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

如果这样可行,则添加order by子句。当这工作,然后去限制&其他的事情。