"IS_NULLABLE"和"NULLABLE"之间的JDBC getColumns差异

Sta*_*cBR 6 java jdbc

我正在尝试提取JDBC数据库驱动程序的数据库元数据.

现在我面对的是我无法向自己解释的文档的一部分:

方法DatabaseMetaData.getColumns(...);(JavaDoc)声明了两个不同的"可空性"列:

NULLABLE int => is NULL allowed.
    columnNoNulls - might not allow NULL values
    columnNullable - definitely allows NULL values
    columnNullableUnknown - nullability unknown 

 IS_NULLABLE String => ISO rules are used to determine the nullability for a column.
    YES --- if the column can include NULLs
    NO --- if the column cannot include NULLs
    empty string --- if the nullability for the column is unknown

我能想到的两个不同专栏的唯一想法是:

那个定义table列在读取时可以为null,而另一个表明在此表列中可以为null.但我无法确定这个想法的正确性.

有谁知道这两列之间有什么区别?有没有关于JDBC API这一部分的更详细信息?

谢谢你的帮助.

Mar*_*eel 5

据我所知,意思是一样的,但是IS_NULLABLE遵循information_schema.columnsSQL:2011 Schemata (ISO-9075-11:2011) 中的视图定义,尽管 SQL:2011 没有指定空字符串的含义(它只指定NO如果不是可YES为空和所有其他情况)。该柱NULLABLE使用常数的值columnNoNullscolumnNullable并且columnNullableUnknown其可以用于更可读代码,以及用于在使用switch(哪个预Java 7的不支持字符串)。它也等价于 的返回值ResultSetMetaData.isNullable(int)

通常,元数据结果集的定义基于information_schemaISO-9075-11:2011 (SQL:2011 Schemata) 或其他版本的 SQL 标准中定义的表和视图。该规范可用于提供有关列的更多信息,但 JDBC 特定的添加除外。除了javadoc 中的内容(以及通过阅读 apidoc 和规范的其他部分中的行之间的内容)之外,通常不会明确指定这些添加内容,尽管这些添加内容通常遵循 SQL 标准的规则和逻辑。