2011-10-14 46 views
1

我使用JDBC來執行查詢語句(在JRuby中)JDBC結果集元數據:在別名列所獲得的物理列名稱

# made-up example 
sql = "select " + 
     "c.type as cartype, " + 
     "o.id as ownerid, " + 
     "o.type as ownertype " + 
     "from cars c " + 
     "inner join owners o " + 
     "on c.vin = o.vin" 
# 'stmt' gotten with jdbc-connection.create_statement() 
result_set = stmt.execute_query(sql) 
meta_data = result_set.get_meta_data() 
col_count = result_set.get_column_count() 

我可以查詢各列別名(get_column_name)和表(get_table_name)爲每列通過列索引,但我也需要列的實際/物理名稱,無別名。

如何獲得列的物理/實際名稱,因爲它在模式中定義(例如,「ownerid」列別名是列「id」)?

+0

作爲附加信息,我使用的是一個sqlite數據庫。在這種情況下,'column_label'和'column_name'函數產生相同的信息(列別名)。這可能是由於實施差異? – inyourcorner

回答

1

從其他數據庫類型的測試看起來好像這是數據庫+驅動程序特定的。使用mysql get_column_name將返回實際/物理列名稱,而get_column_label將返回別名。另外,兩種數據庫類型(mysql和sqlite)都通過get_table_name返回物理表名稱。

相關問題