2016-02-01 21 views
1
public List<String> getColumnDefaultValues(Connection conn,String tableName) throws SQLException{ 

    List<String> colDefVal = new ArrayList<>(); 

    ResultSet rsColumns = null; 
    DatabaseMetaData meta = conn.getMetaData(); 
    rsColumns = meta.getColumns(null, null, tableName, null); 

    while (rsColumns.next()) { 
     colDefVal.add(rsColumns.getString("COLUMN_DEF")); 
    } 

    return colDefVal; 
} 

我使用JDBC連接到MySQL。以下函數返回一個包含指定表中所有列的默認值的列表。它返回正確的默認值,例如「ABC」。但是,對於這兩種情況,它都會返回null:如果默認值設置爲NULL或者根本沒有在列上設置默認值。
如何區分具有默認NULL約束的列和沒有默認約束的列?如何使用JDBC獲取DEFAULT NULL?

+0

列的默認值設置爲'NULL'是不是真的有意義反正; [你實際上在做什麼?](http://xyproblem.info/) – dimo414

+0

我正在構建一個類似於使用JDBC的PhpMyAdmin的應用程序。這就是爲什麼我需要獲取有關表格列的數據。 – yogur

回答

0

JDBC無法爲您提供數據庫本身不可用的任何信息。

根據這一answer MySQL沒有這些列定義區分:

columnname type 
columnname type NULL 
columnname type DEFAULT NULL 
columnname type NULL DEFAULT NULL