【发布时间】:2020-02-08 21:56:54
【问题描述】:
我有一个 PostgreSQL 表
create table test (
id int,
name varchar(2),
active boolean,
long_id bigint,
created timestamptz);
)
我想获取此表中每一列的名称、类型和大小。这是我的代码:
public static void main(final String[] args) throws SQLException {
final Connection connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/test", "postgres", "123");
final DatabaseMetaData metaData = connection.getMetaData();
try (final ResultSet resultSet = metaData.getColumns("public", null, "test", null)) {
while (resultSet.next()) {
System.out.println(resultSet.getString("COLUMN_NAME") + " " + resultSet.getInt("DATA_TYPE") + " " + resultSet.getInt("COLUMN_SIZE"));
}
}
}
这是输出
id 4 10
name 12 2
active -7 1
long_id -5 19
created 93 35
第三列显示列大小,例如布尔值 active 为 1 个字节。但是为什么 id 值(在 PostgreSQL 中是 int)显示 10 个字节而不是 4 个字节?
【问题讨论】:
-
当您的问题是关于
DatabaseMetaData.getColumns的结果集时,为什么您的问题的标题中有ResultSetMetaData?
标签: java postgresql jdbc