我在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中进行此查询,我会得到正常的响应。怎么了?
答案 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子句。当这工作,然后去限制&其他的事情。