2011-01-24 130 views
0

我不確定是否有可能..SQL Server 2008 - 如何獲得列名和值在一起?

我正在使用SQL Server 2008和Java。

我有一個表

-------------- 
| users | 
-------------- 
| name  | 
| address | 
| password | 
|____________| 

然後我做的:

SELECT name, address, password FROM users; 

我得到了所有值從每列。

但是,如果我也想獲取列名稱。

當查詢結果返回時,我想知道哪一列正在查詢。

我該如何獲得價值和專欄?有沒有可能在不改變使用Java的查詢?

代碼

em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager(); 
Query query = em.createNativeQuery("SELECT name, address, password, birthday FROM users"); 
//query result is stored in list consists of object array 
List<Object[]> out = query.getResultList(); 

//so result is like this 
List< 
    [john, 1st ave, 1234, 12/12/2010] 
    [mike, 2st ave, 1111, 12/11/2011] 
> 

//now I create JSON 
{name:john, address:1st ave, birthday....} 

但查詢可能會改變,所以當我構建JSON我不想硬編碼「名」或「地址」。

+0

不理解你的問題。你能顯示樣品輸出你想如何顯示列名? – 2011-01-24 06:14:45

+1

你已經知道什麼列和值一起。你的結果集有標籤列,你也知道你要求的列。如果您分享了您使用的代碼不明確或您遇到的具體問題,您的問題可能會更有意義。 – 2011-01-24 06:14:57

回答

3

列名來自ResultSetMetaData。

例如:

String sql = "Select * from Activity"; 
Statement stmt = connection.createStatement(); 
ResultSet rs = stmt.executeQuery(sql); 
ResultSetMetaData md = rs.getMetaData(); 
int columns = md.getColumnCount(); 

// Get column names 

for (int i = 1; i <= columns; i++) 
{ 
    columnNames.addElement(md.getColumnName(i)); 
} 

// Get row data 

while (rs.next()) 
{ 
    Vector row = new Vector(columns); 

    for (int i = 1; i <= columns; i++) 
    { 
     row.addElement(rs.getObject(i)); 
    } 

    data.addElement(row); 
} 
1

你可以只做到這一點 - 假設你需要COLUMNNAME其次columnvalue -

SELECT "name" as column1, name, "address" as column2, address, "password" as column3, password FROM users;