0

我使用 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.
4

2 回答 2

0

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

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

于 2011-01-06T21:00:22.883 回答
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”。

于 2017-10-04T07:17:12.853 回答