2010-11-11 186 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”。