繁体   English   中英

ResultSetMetaData 获取列的默认值

[英]ResultSetMetaData getting default value of column

我正在使用 Oracle 数据库。

我想使用 Java JDBC 将默认值分配给列。

但是使用ResultSetMetaData不提供任何方法来获取列的默认值。

所以请告诉我任何想法。 提前致谢。

您可以运行此查询

Select DATA_DEFAULT from USER_TAB_COLUMNS where TABLE_NAME ='MyTable' and COLUMN_NAME = 'MyColumn'

下面的函数返回列的默认值。 在您的ResultSetMetaData上调用它

public java.lang.String getDefaultValue(int columnIndex) // or columnName
                                 throws DriverException

ResultSetMetaData.getDefaultValue(columnNameOrcolumnIndex)

我能找到的 Java JDBC 中的 ResultSetMetaData 上没有“getDefaultValue”方法。
但是,以下查询有效:

SELECT COLUMN_NAME, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS
where table_name='<tablename>' and COLUMN_DEFAULT is not null

连接到有问题的数据库,或者类似地使用查询 master 的数据库名称。

这个答案使用DatabaseMetadata而不是ResultSetMetadata ,所以从技术上讲它不回答提出的问题。 然而,它似乎比查询更可靠,并且对整个社区仍然具有长期价值:

JDBC 有没有办法检测列是否有默认值?

例子:

Connection connection = ...;

DatabaseMetaData databaseMetaData = connection.getMetaData();
try (ResultSet resultSet = databaseMetaData.getColumns(null, null, "MyTable", "MyColumn")) {
    while (resultSet.next()) {
        String defaultValue = resultSet.getString("COLUMN_DEF");
        // Do something...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM