Java 从JDBC为双数据类型设置空值
我正在从JDBC获取两个双精度值,如果它们为null,我想在我的文本字段中将它们作为null使用,如果它们为0,我想填充它们作为0使用。我尝试过resultSet.wasNull,但即使我得到0,它也会将它们设置为null值 这是我写的Java 从JDBC为双数据类型设置空值,java,jdbc,Java,Jdbc,我正在从JDBC获取两个双精度值,如果它们为null,我想在我的文本字段中将它们作为null使用,如果它们为0,我想填充它们作为0使用。我尝试过resultSet.wasNull,但即使我得到0,它也会将它们设置为null值 这是我写的 resultsetPricing = stmtPricingData.executeQuery(); while(resultsetPricing.next()){ if(pricetype.equals("Price List A")){
resultsetPricing = stmtPricingData.executeQuery();
while(resultsetPricing.next()){
if(pricetype.equals("Price List A")){
priceExclVat = resultsetPricing.getDouble("PRICE_EXC_VAT");
priceInclVat = resultsetPricing.getDouble("PRICE_INC_VAT");
if(priceExclVat == 0){
System.out.println("Inside if EXCL");
if(resultsetPricing.wasNull()){
System.out.println("Inside RESULT SET NULL EXCL");
//do something
}
}else if(priceExclVat != 0 || priceExclVat == 0){
System.out.println("Inside ELSE EXCL");
priceExclVatStr = String.valueOf(priceExclVat).replace(".",",");
//do something
}
if(priceInclVat==0){
System.out.println("Inside if INCL");
if(resultsetPricing.wasNull()){
System.out.println("Inside RESULT SET NULL INCL");
//do something
}
}else if(priceInclVat!=0 || priceInclVat==0){
System.out.println("Inside ELSE INCL");
priceInclVatStr = String.valueOf(priceInclVat).replace(".",",");
//do something
}
}
}
请指出我错在哪里。
TIA必须首先测试
wasNull()
的返回值
double
不能有null
值,因此调用getDouble()
方法时返回零
代码应类似于以下伪代码:
priceExclVat = resultsetPricing.getDouble("PRICE_EXC_VAT");
boolean pevNull = resultSetPricing.wasNull();
priceInclVat = resultsetPricing.getDouble("PRICE_INC_VAT");
boolean pivNull = resultSetPricing.wasNull();
if (pevNull && pivNull)
{
// code to deal with both null return
}
else if (pevNull && !pivNull)
{
// code to handle non-null PEV and null PIV
}
else if (!pevNull && pivNull)
{
// etc...
}
....
你怎么知道数据库中的实际值是多少?我已经检查了数据库。返回0或null值的列被检查为null,但大于0的值被正确获取。短答案是use
getObject
notgetDouble
。这将为您提供一个null
当且仅当结果集中的值为null
时。如果该值不是null
,那么您将得到一个双精度
…我也对此进行了检查。如果您看到我的代码,我将检查resultset是否为0如果它为0,那么我将使用resultset.wasNull检查它是否为null。您可以参考上述代码。您没有处理代码中所有可能的null
和非null
组合。代码需要考虑所有的组合。我已经尝试过了,但是只有我找到的结果是RESULTSET。WASNULL检查结果是否有空值。