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

发布于 2024-08-27 06:45:46 字数 334 浏览 4 评论 0原文

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

我遇到的问题是,获取 ResultSet 会占用我脑海中不必要的资源 - 我实际上不需要查询表中的数据,我只想要有关表的一些信息。

有谁知道有什么方法可以获取 ResultSetMetaData 对象,而无需先获取 ResultSet (来自潜在的巨大表)?

I need to resolve a bunch of column names to column indexes (so as to use some of the nice ResultSetMetaData methods). However, the only way that I know how to get a ResultSetMetaData object is by calling getMetaData() on some ResultSet.

The problem I have with that is that grabbing a ResultSet takes up uneccesary resources in my mind - I don't really need to query the data in the table, I just want some information about the table.

Does anyone know of any way to get a ResultSetMetaData object without getting a ResultSet (from a potentially huge table) first?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

赴月观长安 2024-09-03 06:45:46

也许您可以使用

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

它为每个表列返回一行。

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

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

Maybe you could use

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

It returns one row for each table column.

In this case you'd use the returned ResultSet itself, not its ResultSetMetaData.

One advantage of this approach is, that it doesn't interfere with database locking and transactions.

感受沵的脚步 2024-09-03 06:45:46

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

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

Assuming you're doing a select * from mytable you could just add a where clause that ensures no records will be returned and the ResultSet will be empty?

That way you are still just getting the metadata for the table you are interested in instead of the entire database.

鱼忆七猫命九 2024-09-03 06:45:46

另一种解决方案

select * from mytable limit 0;

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

Another solution

select * from mytable limit 0;

Then the query dont get any data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文