java - 如何从 Oracle 表中获取所有列的名称

标签 java oracle metadata

如何使用 Java 从 Oracle 表中获取所有列的名称? 有没有办法从 DatabaseMetaData 对象中获取它们?

DatabaseMetaData myDatabaseMetaData = myConnection.getMetaData();
...

我知道我可以使用 select 语句获取它们:

Select COLUMN_NAME from user_tab_columns where table_name='MYTABLE'

如果可以从 DatabaseMetaData 对象中获取它们,那么这两种方法有什么区别?

编辑:发布工作代码(感谢您的回答)

public ArrayList<String> getAllFields(String tableName) {
    ArrayList<String> allFields = new ArrayList<String>();
    try {
        DatabaseMetaData myDatabaseMetaData = myConnection.getMetaData();
        ResultSet columnsResultSet = myDatabaseMetaData.getColumns(null, null, tableName, null);
        while (columnsResultSet.next()) { allFields.add(columnsResultSet.getString("COLUMN_NAME")); }
    } catch (SQLException ex) {
        Exceptions.printStackTrace(ex);
    }
    return allFields;
}

最佳答案

您正在寻找DatabaseMetaData.getColumns()

好吧,您的 SQL 和 JDBC API 之间的区别在于,API 调用应该适用于所有 DBMS,而 SQL 仅适用于 Oracle。

关于java - 如何从 Oracle 表中获取所有列的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124086/

相关文章:

java - 如何制作过滤器以避免访问未记录的页面?

oracle - 创建具有非原子刷新的物化 View ?

java - 如何在 Hibernate 中将字符串映射到数据库序列

http - RESTfully 实现包含元的多对​​多关系的最佳方式是什么?

java - 我怎样才能在java中处理声音?

java - Android 中 Webview 之前避免白屏

java - JMockit 验证使用不同参数调用两次的可注入(inject)方法

java - ORA-02289 : sequence does not exist, 但是序列已存在于数据库中

metadata - 如何将 4 个项目放入 RDF 三元组中?

metadata - 使用 OPENQUERY(exec 存储过程)创建新临时表失败,错误为 11526