在 JDBC 中获取列名

Posted

技术标签:

【中文标题】在 JDBC 中获取列名【英文标题】:getting column names in JDBC 【发布时间】:2011-08-01 09:53:13 【问题描述】:

我想知道如何判断某个数据库表中是否存在具有某个名称的列。我正在使用 JDBC,但如果它可以用纯 SQL 完成,那就更好了。然而,该解决方案必须独立于 DBMS 提供者。我想我可以通过查询表的第一行并从中获取 ResultSetMetaData 来做到这一点,但这假设表中有一行。我希望它也可以与空表一起使用。提前致谢!

【问题讨论】:

ResultSetMetaData 仍然有效,即使表是空的... 【参考方案1】:

您可以从DatabaseMetaData 获取它们。

DatabaseMetaData meta = connection.getMetaData();
ResultSet rs = meta.getColumns(...);

【讨论】:

请注意,当您使用getColumns(null,null,tablename,null) 获取表的列时,表名区分大小写。【参考方案2】:

表是否为空无关紧要。 ResultSetMetaData 仍会为您提供有关 ResultSet 对象中列的类型和属性的信息。

【讨论】:

【参考方案3】:

您可以使用 java.sql.DatabaseMetaData 接口检索有关数据库结构的一般信息。

DatabaseMetaData dbmeta = con.getMetaData();

调用 getColumns(),获取可用表列的描述。

【讨论】:

以上是关于在 JDBC 中获取列名的主要内容,如果未能解决你的问题,请参考以下文章

JDBC ResultSet 获取具有表别名的列

JDBC——ResultSet结果集对象

怎样在mysql中获取列名

如何在 Laravel 4 中获取列名?

如何在mysql中获取值不为null的列名

在 SQL 查询中使用 Python 列表获取列名