获取列详细信息的Databasemetadata

时间:2010-11-11 10:58:32

标签: java jdbc database-metadata

我使用databasemetadata来查找列大小。但是getColumns(null,null,“table_name”,null)返回一个空的结果集。我通过查询表检查了表,表存在。错误在哪里?提前致谢!

更新

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.

2 个答案:

答案 0 :(得分:0)

您使用的是哪个数据库?它可能与它如何处理不带引号的标识符有关,遵循标准的数据库会自动以大写形式存储它们。您可以通过调用storesUpperCaseIdentifiers方法以编程方式检查是否这样做。

解决方案是在创建表时使用带引号的标识符,或者如果toUpperCase返回true,则在表名字符串上调用storesUpperCaseIdentifiers方法。

答案 1 :(得分: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"。