Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JDBC为双数据类型设置空值_Java_Jdbc - Fatal编程技术网

Java 从JDBC为双数据类型设置空值

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")){

我正在从JDBC获取两个双精度值,如果它们为null,我想在我的文本字段中将它们作为null使用,如果它们为0,我想填充它们作为0使用。我尝试过resultSet.wasNull,但即使我得到0,它也会将它们设置为null值

这是我写的

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
not
getDouble
。这将为您提供一个
null
当且仅当结果集中的值为
null
时。如果该值不是
null
,那么您将得到一个
双精度
…我也对此进行了检查。如果您看到我的代码,我将检查resultset是否为0如果它为0,那么我将使用resultset.wasNull检查它是否为null。您可以参考上述代码。您没有处理代码中所有可能的
null
和非
null
组合。代码需要考虑所有的组合。我已经尝试过了,但是只有我找到的结果是RESULTSET。WASNULL检查结果是否有空值。