簡體   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