2012-10-23 62 views
0

我有PostgreSQL的8.4表:使用JDBC的Java問題

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中做這個查詢,我會得到一個正常的響應。怎麼了?

+0

什麼是您用於查詢結束時的「LIMIT」? –

+1

顯然你的結果集不會返回任何結果。你是否從另一個會話中將表插入到表中?你有沒有仔細檢查你在Java程序中連接到本地主機? –

+0

連接到數據庫工作正常。我看到一個數據我的基地。 –

回答

1

結果集文檔說,如果新的當前行有效,或者如果沒有更多行,則下一個方法返回true。

所以查詢結果不好。檢查你的數據庫連接,也許你連接到一些其他數據庫有空表filedata_temp或一些相關的問題。

+0

我認爲在以前的課程中,連接是完全正常的。 –

+0

不僅僅是在調試模式下執行該代碼塊,您將能夠看到結果集是否具有您所期望的數據。 – pedjaradenkovic

+0

Java真的很恐怖。在rastart之後服務器一切正常。 –

1

遵循以下步驟:

在上述程序變更查詢 「SELECT * FROM filedata_temp」 &變化id.getInt到id.getObject。 看看你是否至少得到這個查詢的東西。如果這給你的表中的所有列,那麼你的連接,數據庫,表一切都很好。

然後,接下來將查詢更改爲「SELECT num FROM filedata_temp」& use id.getObject。看看你現在是否能夠獲得所有行的num值。

如果這個工作,然後添加按順序的條款。當這個工作,然後去限制&其他的事情。