2010-09-09 105 views
0
strInsertQuery="INSERT INTO SYNPACKAGEFREEUSAGEMAPPING (PACKAGEID,SERVICEID,PRIORITY,MAPPINGID,ATTRIBUTEVALUE,FREEUSAGE,UOM,PARAMSTR1,UNITCREDITPOLICYDETAILID) VALUES (?,?,?,?,?,?,?,?,?)"; 
newPstmt=newCon.prepareStatement(strInsertQuery); 
newPstmt.setString(1,strProductId); 
       newPstmt.setString(2,strUPGServiceId); 
       newPstmt.setInt(3,0); 
       if(FieldMappingrs.next()) 
       { 
       newPstmt.setLong(4,FieldMappingrs.getLong(1)); 
       } 
       newPstmt.setString(5,ucpDetailData.getCreditattributevalue()); 
       for(Iterator itrColUnitCreditDetail=ucpData.iterator();itrColUnitCreditDetail.hasNext();) 
     { 

     unitCreditData = (UnitCreditDetailData)itrColUnitCreditDetail.next(); 
     if(ucpDetailData.getUnitcreditpolicydetailid().equals(unitCreditData.getUnitcreditpolicydetailid())) 
     { 
     debugLog(PackageConstant.PACKAGE_MODULE_NAME,"ServicePackageSessionBean:createFreeUsageServiceDetails() unitCreditData "+ unitCreditData); 
       newPstmt.setDouble(6,unitCreditData.getEndvalue()); 
       } 

       debugLog(PackageConstant.PACKAGE_MODULE_NAME,"Insert record successfull"+ ucpDetailData); 
       } 
       newPstmt.setString(7,ucpDetailData.getUom()); 
       newPstmt.setString(8,ucpDetailData.getCreditattribute()); 
       newPstmt.setString(9,ucpDetailData.getUnitcreditpolicydetailid()); 

       newPstmt.executeUpdate(); 

回答

5

好時,看看這個:

if(FieldMappingrs.next()) 
{ 
    newPstmt.setLong(4,FieldMappingrs.getLong(1)); 
} 

所以你有條件設置參數4。

你想要什麼插入如果FieldMappingsrs.next()返回false? (我懷疑這是發生了什麼。)嘗試在else塊中將其設置爲適當的值。

1

你的問題是,就在這個塊

if(FieldMappingrs.next()) { 
     newPstmt.setLong(4,FieldMappingrs.getLong(1)); 
    } 

正如你看到的,如果.next()返回false,你將不會被傳遞參數在index 4.

我建議,如果你能傳遞給該表0,而不是空使用本

if(FieldMappingrs.next()) { 
     newPstmt.setLong(4,FieldMappingrs.getLong(1)); 
    } else { 
     newPstmt.setLong(4,0); 
    } 

,或者如果它需要的值,只是拋出一個exception

相關問題