2010-11-11 173 views
0

我使用databasemetadata查找列大小。但getColumns(null,null,「table_name」,null)返回一個空的結果集。我查詢了桌子並查看了表格。錯誤在哪裏?提前致謝!Databasemetadata獲取列詳細信息

更新:

Connection connection = getConnection(); //getting the connection - 
Statement st = connection.createStatement(); 
ResultSet rs = st.executeQuery("select * from table_name"); 
while (rs.next()) { 
    System.out.println(rs.getString("column_name")); //The values get printed 
} 
ResultSet rsColumns = null; 
DatabaseMetaData meta = connection.getMetaData(); 
rsColumns = meta.getColumns(null, null, "table_name",null);  
System.out.println(rsColumns.next()); // I get false here which means resultset is empty. But I dunno why. 

回答

0

的數據庫您使用的?這可能與它如何處理未加引號的標識符有關,遵循標準的數據庫會自動以大寫形式存儲它們。您可以通過調用storesUpperCaseIdentifiers方法以編程方式檢查它是否如此。

如果storesUpperCaseIdentifiers返回true,則解決方案是在創建表時使用帶引號的標識或在表名字符串上調用toUpperCase方法。

0

你可以嘗試下面的代碼片段:

ResultSet rsColumns = null; 
DatabaseMetaData meta = connection.getMetaData(); 
rsColumns = meta.getColumns(null, null, "table_name",null);  
While (rsColumns,next()) { 
System.out.println(rsColumns.getInt("COLUMN_SIZE")); 
} 

我認爲你缺少了 「COLUMN_SIZE」。