尝试使用jdbc元数据获取列的列大小

时间:2016-02-15 16:10:12

标签: java sqlite jdbc

我正在尝试仅使用jdbc中的元数据为表重新创建模式。

除了列大小之外,我已经完成了所有工作。 location VARCHAR(10)

目前,每个列都打印VARCHAR(2000000000)

代码:

ResultSet rs = databaseMetaData.getColumns(null, null, tableName, null);
while(rs.next()) {
  int columnSize = rs.getInt("COLUMN_SIZE");
}

预期输出是在创建模式中的表时使用的数字,但它总是返回2000000000.有什么简单的我缺少吗?

2 个答案:

答案 0 :(得分:3)

您的问题的标签表明您使用的是SQLite。

documentation,第2.2章亲和名称示例,声明:

  

请注意类型后面的括号中的数字参数   SQLite忽略了名称(例如:" VARCHAR(255)") - SQLite没有   施加任何长度限制(除了大的全球   SQLITE_MAX_LENGTH limit)对字符串,BLOB或数字的长度   值。

由于SQLite不使用长度信息,因此对于COLUMN_SIZE,它只返回基于字符的列的最大大小。

答案 1 :(得分:1)

尝试使用方法

databaseMetaData.getColumnDisplaySize(int column)

其中column参数是表中的列数。资源: https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html