Java.SQL和PostgreSQL表

Java.SQL和PostgreSQL表,java,sql,database,postgresql,jdbc,Java,Sql,Database,Postgresql,Jdbc,我对java.sql.*有一些问题 1) 如何获取表中所有列的类型列表?现在我确实要求 SELECT data_type FROM information_schema.columns WHERE information_schema.columns.table_name = 'TableName'; 如何使用Java做同样的事情?我认为与发言者的姓名相似 2) 但是,如何定义列属性还不清楚:NULL/notnull,主键,等等 3) 关于SERIAL:获取类型时,此列返回INT,无法处理。

我对
java.sql.*
有一些问题

1) 如何获取表中所有列的类型列表?现在我确实要求

SELECT data_type FROM information_schema.columns
WHERE  information_schema.columns.table_name = 'TableName';
如何使用Java做同样的事情?我认为与发言者的姓名相似

2) 但是,如何定义列属性还不清楚:
NULL/notnull
主键
,等等

3) 关于
SERIAL
:获取类型时,此列返回
INT
,无法处理。是否有方法区分
序列

感谢您的理解。

您可以使用来查询表中的列

根据您获取
表名
数据的愿望:

DatabaseMetaData dbmd = connection.getMetaData()
try (ResultSet columns = dbmd.getColumns(null, null, "TableName", "%")) {
    while(columns.next()) {
        // get the info from the resultset (eg the java.sql.Types value):
        int dataType = columns.getInt("DATA_TYPE");
    }
}
getColumns
的参数是
类似的
-patterns,这就是为什么最后一个参数(
columnPattern
)获得值
“%”
。可以从列
NULLABLE
IS_NULLABLE
中检索可空性,有关序列号的信息可能可以从列
IS_AUTOINCREMENT
中检索,有关详细信息,请参阅文档。要查找主键,可以使用


有关更多信息,请查看javadoc,它非常详细。

About NULLABLE/is_NULLABLE和is_AUTOINCREMENT For PostgreSQL其余部分不正确,谢谢。查看这些列的PostgreSQL jdbc源代码是在jdbc驱动程序中设置的(第2512行和第2519行)。看起来,
serial
也由列
TYPE\u NAME
指示(第2841行)