我需要将一堆列名解析为列索引(以便使用一些不错的ResultSetMetaData
方法)。但是,我知道如何获取ResultSetMetaData
对象的唯一方法是在某些getMetaData()
上调用ResultSet
。
我遇到的问题是抓取一个ResultSet会占用我脑子里不必要的资源 - 我真的不需要查询表中的数据,我只是想了解一些关于该表的信息。
有没有人知道如何获得ResultSetMetaData
对象而不首先获得ResultSet
(来自可能很大的表)?
答案 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中选择*;
然后查询没有得到任何数据。