2014-10-21 11 views
5

JDBC veritabanı sürücüsünün veritabanı meta verilerini ayıklamaya çalışıyorum.JDBC getColumns "IS_NULLABLE" ve "NULLABLE" arasındaki farklar

Ve şimdi kendime açıklayamıyorum belgelerin bir kısmını karşı karşıyayım:

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

Yöntem DatabaseMetaData.getColumns(...); (JavaDoc) iki farklı "nullability" sütunlarını devletler

ve

 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
i iki farklı sütunlar için düşünebildiğim

sadece fikir: okumak ve diğer devletler bu tablo sütun eklenecek boş değerle olabilir içine ne zaman bir tablo sütunu boş olabilir tanımlar

O. Fakat bu fikrin doğruluğunu belirleyemedim.

Bu iki sütun arasındaki farkın kesin olarak bilen biri var mı? JDBC API'sının bu kısmı hakkında daha ayrıntılı bilgi var mı?

Yardımlarınız için teşekkürler.

cevap

3

Anlamının aynı olduğunu bildiğim kadarıyla, IS_NULLABLE, SQL: 2011 SQL Server'ın boş dizgeyi belirtmese de SQL: 2011 Schemata (ISO-9075-11: 2011) information_schema.columns görünüm tanımını izler. (yalnızca diğer tüm durumlar için null ve YES değilse NO belirtir). Sütun NULLABLE, daha okunabilir kodlar için kullanılabilen columnNoNulls, columnNullable ve columnNullableUnknown sabitlerinin değerini kullanır ve switch (Java öncesi 7, dizeyi desteklemez). Aynı zamanda ResultSetMetaData.isNullable(int)'un dönüş değeriyle eşdeğerdir.

Genel olarak meta veri sonuç kümelerinin tanımı, ISO-9075-11: 2011 (SQL: 2011 Schemata) veya SQL standardının diğer sürümlerinde tanımlanan information_schema tabloları ve görünümleri temel alır. Bu belirtim, JDBC'ye özgü eklemeler dışında, sütunlarla ilgili daha fazla bilgi için kullanılabilir. Bu eklemeler genellikle javadoc'ta (ve apidoc ve belirtimin diğer kısımlarındaki satırlar arasında okuyarak) hariç, tarafından açıkça belirtilmeyen değil, bu eklemeler genellikle SQL standardının kurallarını ve mantığını izler.

İlgili konular