2010-09-09 13 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(); 

Répondre

5

Eh bien, regardez ceci:

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

Vous êtes donc conditionnellement paramètre de réglage 4.

Que voulez-vous insérer si FieldMappingsrs.next() renvoie la valeur false? (Je soupçonne que c'est ce qui se passe.) Essayez de le définir à une valeur appropriée dans un bloc else.

1

Votre problème est juste à ce bloc

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

Comme vous le voyez si .next() retours false vous ne serez pas passer le paramètre à index 4.

Je suggère, si vous pouvez passer à cette table 0 au lieu d'utiliser null ce

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

Ou si elle est valeur nécessaire, juste jeter un exception.