2013-05-29 48 views
-1

鑑於表的名稱,如何知道使用JDBC的列的名稱?我知道這是使用DatabaseMetaData的東西,歡迎舉例!如何知道使用JDBC的列的名稱?

完成問題:

我使用HSQLDB和創建表時我啓動服務器,似乎databasemetada未能讀取列名。

String tableName = "cities"; 
DatabaseMetaData metaData = connection.getMetaData(); 
ResultSet resultSet = metaData.getColumns(null, null, tableName, null); 
while(resultSet.next()){ 
System.out.println(resultSet.getString("COLUMN_NAME")); 
} 

目的resultSet.next()即將空。

+0

http://www.java2s.com/Code/Java/Database-SQL-JDBC/UseDatabaseMetaDatatogettablecolumnnames.htm – Jarandinor

回答

0

您是對的,您將使用DatabaseMetaData對象,然後使用其getColumns()方法。例如:

DatabaseMetaData dbm = connection.getMetaData(); 
ResultSet columns = meta.getColumns(null, "Schema Name", "Table Name", null); 

請注意,中間兩個參數分別指定了哪個模式和哪個表。 (如果您爲這些參數傳遞null,你的ResultSet將包括對數據庫中的所有模式中的所有表中的所有列

0
  1. 執行查詢,得到ResultSet對象rs
  2. 得到ResultSetMetaData對象:ResultSetMetaData rsd = rs.getMetaData()
  3. 得到列數:

    int columnCount = rsd.getColumnCount(); 
    for(int i = 1; i <= columnCount; i++) { 
        System.out.println(rss.getColumnName(i)); 
    } 
    
2

您可以嘗試大寫表名:

String tableName = "CITIES"; 
+1

這可能工作的原因是,你需要使用表名模式,因爲它是存儲在數據庫,例如,對於大寫存儲的不區分大小寫的列名,您需要將它們請求大寫。 [javadoc說](http://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String,%20java。 lang.String,%20java.lang.String)):「_a表名模式;必須與存儲在database_中的表名匹配」 –

相關問題