如何在将记录插入数据库表Java之前检查非空字段

时间:2012-08-01 11:44:00

标签: java jdbc

我必须通过插入主键字段值在数据库表(MySQL,Oracle,MSSQL)中创建/插入新记录。但是如果表中的列不允许空值,则这不起作用。如何检查不允许空值的表列。

5 个答案:

答案 0 :(得分:4)

您可以针对您的表执行请求,例如在启动时,然后检查表的元数据:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM myTable");
ResultSetMetaData rsmd = rs.getMetaData();
int nullable = rsmd.isNullable(1);
if(nullable == ResultSetMetadata.columnNullable) {
    System.out.println("Nullable");
}

答案 1 :(得分:3)

查看DatabaseMetadata对象,特别是getAttributes()方法。

  

NULLABLE int =>是否允许NULL

attributeNoNulls - might not allow NULL values
attributeNullable - definitely allows NULL values
attributeNullableUnknown - nullability unknown

我认为(但是)你的应用程序应尽可能多地了解。数据限制。数据库通过这些约束来保护自己,但应用程序应该(在可能的情况下)知道并尊重这些信息。

答案 2 :(得分:1)

看起来这应该有效: ResultSetMetaData.isNullable

public int isNullable(int column)
           throws SQLException

Indicates the nullability of values in the designated column.

Parameters:
    column - the first column is 1, the second is 2, ... 
Returns:
    the nullability status of the given column; one of columnNoNulls, columnNullableor columnNullableUnknown 
Throws:
    SQLException - if a database access error occurs

答案 3 :(得分:0)

如果我找对你,你正在寻找一种方法来测试你程序中的表格(我假设不是手动的)......
像这样测试每个表:
第1步:尝试将包含空值的记录插入到您的表中 第2步:如果异常上升,请抓住它并与其他表一起执行这些步骤
您可以标记这些表或列出包含表名称的列表。

答案 4 :(得分:0)

您也可以检查ResultSetMetaData。 javadoc

ResultSetMetaData.columnNullable
ResultSetMetaData.columnNoNulls
ResultSetMetaData.columnNullableUnknown

此致