如何在没有ResultSet的情况下获得等效的ResultSetMetaData

时间:2010-04-01 22:17:46

标签: java mysql jdbc metadata

我需要将一堆列名解析为列索引(以便使用一些不错的ResultSetMetaData方法)。但是,我知道如何获取ResultSetMetaData对象的唯一方法是在某些getMetaData()上调用ResultSet

我遇到的问题是抓取一个ResultSet会占用我脑子里不必要的资源 - 我真的不需要查询表中的数据,我只是想了解一些关于该表的信息。

有没有人知道如何获得ResultSetMetaData对象而不首先获得ResultSet(来自可能很大的表)?

3 个答案:

答案 0 :(得分:4)

也许你可以使用

DatabaseMetaData databaseMetaData = connection.getMetaData();
databaseMetaData.getColumns(null, null, tableName, "%");

为每个表列返回一行。

在这种情况下,您将使用返回的ResultSet本身,而不是ResultSetMetaData

这种方法的一个优点是,它不会干扰数据库锁定和事务。

答案 1 :(得分:2)

假设您正在执行select * from mytable,您可以添加一个where子句,以确保不会返回任何记录并且ResultSet将为空?

这样您仍然只是获取您感兴趣的表的元数据而不是整个数据库。

答案 2 :(得分:0)

另一种解决方案

从mytable limit 0中选择*;

然后查询没有得到任何数据。