2013-05-20 4 views
0

, как использовать несколько запросов в Java с помощью JDBCкак использовать несколько запросов в Java с помощью JDBC

1.how использовать это ниже запрос в методе без удаления уже существующего запроса в
метод

  1. Вставить в item_details (stock_name, храм, количество) SELECT, a.stock_name, a.temple, SUM (случай, когда тип = 'покупки', то количество еще
    (количество * -1) End) AS количество ОТ purchase_details a 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

Похоже, что у вас есть транзакционная собственность. – shazin

ответ

0

Вы можете сделать два SQLs атомное, используя что-то похожее на код ниже. Это гарантирует, что все или ничего не управляют.

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; 

} 
Смежные вопросы