我使用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.
答案 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"。