我试图仅使用jdbc的元数据为表重新创建一个模式。
除了列的大小之外,我所有的东西都在工作。地点VARCHAR(10)
目前,每一列都打印VARCHAR(2000000000)。
守则:
ResultSet rs = databaseMetaData.getColumns(null, null, tableName, null);
while(rs.next()) {
int columnSize = rs.getInt("COLUMN_SIZE");
}预期的输出是在创建架构中的表时使用的数字,但它总是返回2000000000。我错过了什么简单的东西吗?
发布于 2016-02-15 16:24:31
您问题的标记表明您正在使用SQLite。
文档,第2.2章亲缘名称示例指出:
请注意,SQLite - SQLite忽略类型名称(ex:"VARCHAR(255)")后面的括号中的数值参数,不会对字符串、BLOB或数值的长度施加任何长度限制(除了大型全局SQLITE_MAX_LENGTH限制之外)。
由于SQLite不使用长度信息,所以对于COLUMN_SIZE,它只返回基于字符的列的最大大小。
发布于 2016-02-15 16:20:19
尝试使用这种方法
databaseMetaData.getColumnDisplaySize(int column)其中column参数是表中的列数。来源:https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html
https://stackoverflow.com/questions/35413956
复制相似问题