2013-05-20 2 views
0

comment utiliser plusieurs requêtes en Java en utilisant jdbccomment utiliser plusieurs requêtes en Java en utilisant JDBC

1.how utiliser cette requête dans ci-dessous la méthode sans supprimer la requête déjà existante dans
méthode

  1. Insérer dans item_details (stock_name, temple, quantité) SELECT a.stock_name, a.temple, SUM (cas où 'achat' type = quantité alors d'autre
    (quantité * -1) Fin) AS quantité dE purchase_details un GROUP BY a.stock_name, a.temple


    public boolean insertIntimationDetails(StockForm ofform) { 
        boolean status=false; 
        PreparedStatement pst=null; 
        Connection conn=null; 
    
        try { 
        System.out.println("Inside insertIntimationDetails "); 
        String query=" update purchase_details set intimation_quantity = ? where     
    temple=? and Stock_name=? ";  
        System.out.println(query); 
        conn=getConnection(); 
        System.out.println(query); 
        pst=conn.prepareStatement(query); 
        System.out.println(ofform.getIntimationQuantity()); 
        pst.setString(2, ofform.getForTemple()); 
        pst.setString(3, ofform.getStockName()); 
        pst.setLong(1, ofform.getIntimationQuantity()); 
    
           int rows= pst.executeUpdate(); 
        if(rows>0){ 
         status=true; 
        } 
    
    
    
        } catch (Exception e) { 
        e.printStackTrace(); 
        } finally{ 
        try { 
         if(pst!=null) 
          pst.close(); 
         if(conn!=null) 
          conn.close(); 
        } catch (Exception e2) { 
         e2.printStackTrace(); 
        } 
    
    } 
    
    return status; 
    
        } 
    
+0

Vous semblez avoir besoin d'une propriété transactionnelle. – shazin

Répondre

0

Vous pouvez faire les deux atomes SQLs en utilisant quelque chose de similaire au-dessous de code. Cela garantit la règle du tout ou rien.

public boolean insertIntimationDetails(StockForm ofform) { 
    boolean status = false; 
    PreparedStatement pst = null; 
    Connection conn = null; 
      Statement stat = null; 

    try { 
     System.out.println("Inside insertIntimationDetails "); 
     String query = " update purchase_details set intimation_quantity = ? where temple=? and Stock_name=? "; 
     System.out.println(query); 
     conn = getConnection(); 
     conn.setAutoCommit(false); // Disable Auto Commit 
     System.out.println(query); 
     pst = conn.prepareStatement(query); 
     System.out.println(ofform.getIntimationQuantity()); 
     pst.setString(2, ofform.getForTemple()); 
     pst.setString(3, ofform.getStockName()); 
     pst.setLong(1, ofform.getIntimationQuantity()); 

     int rows = pst.executeUpdate(); 
     if (rows > 0) { 
      status = true; 
     } 

     stat = conn.createStatement(); 
     boolean status2 = stat 
       .execute("Insert into item_details(stock_name,temple,quantity) SELECT a.stock_name, a.temple, SUM(Case when Type='purchase' then quantity else (quantity*-1) End) AS quantity FROM purchase_details a GROUP BY a.stock_name, a.temple"); 

     if (status && status2) { 
      conn.commit(); 
     } else { 
      conn.rollback(); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     conn.rollback(); 
    } finally { 
     try { 
      if (pst != null) 
       pst.close(); 
      if (stat != null) 
       stat.close(); 
      if (conn != null) 
       conn.close(); 
     } catch (Exception e2) { 
      e2.printStackTrace(); 
     } 

    } 

    return status; 

} 
Questions connexes