2015-07-20 49 views
1

我有這個疑問:的Java getColumLabel和getColumnName不能正常工作

select a.id AS testid, b.id as test2id from connector a LEFT JOIN connector_status b ON a.id = b.id where a.id = 99999 

我想檢索與此代碼的結果集元數據:

Statement st = conn.createStatement(); 
st.setMaxRows(1); 
ResultSet rs = st.executeQuery(query); 
ResultSetMetaData meta = rs.getMetaData(); 
int columns = meta.getColumnCount(); 
for (int i = 1; i <= columns; i++) { 
    System.out.println("Name: " + meta.getColumnName(i)); 
    System.out.println("Label: " + meta.getColumnLabel(i)); 
} 

我得到這樣的結果:

Name: testid 
Label: testid 
Name: test2id 
Label: test2id 

我在做什麼錯了? getColumnName()應該返回id,還是我錯了?

問候 彼得

+0

你在做什麼dbms?查看關於getColumnName和getColumnLabel的JDBC實現的一些信息http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSetMetaData.html#getColumnLabel(int)。 – Willmore

+0

PostgreSQL,但查詢應該適用於每個dbms – Peter

+0

實現之間存在差異:/請參閱h2 http://www.h2database.com/html/faq.html#column_names_incorrect。 – Willmore

回答

0

a.id的別名是testid。因爲否則「ID」將在select a.id AS testid, b.id as test2id from connector a LEFT JOIN connector_status b ON a.id = b.id where a.id = 99999中不明確。

由於別名「testid」,getColumnName()返回「testid」。