2014-04-18 3 views
0

여러 테이블을 가능한 한 업데이트 할 수 있습니까? 그리고 누군가가 내 코드에 문제가 있는지 알 수 있다면, 나는 명령을 제대로 종료되지 구문 오류여러 테이블 업데이트 JDBC

public void updateProdCD(DigiProduct p) 
{ 

     try { 

      String queryString = "UPDATE Product SET p.prod_id=?,"      
           +" p.prod_type=?, " 
           +" c.album_name=?, " 
           +" c.cd_cost_price=?, " 
           +" c.cd_sale_price=?, " 
           +" p.current_stock=?, " 
           +" dp.age_rating=?, " 
           +" dp.genre=?, " 
           +" c.record_company=?, " 
           +" c.album_length=? " 
      +" FROM product p, digital_product dp, " 
      +" cd c, artist a, cd_artist ca " 
        +"WHERE dp.prod_id = p.prod_id " 
        +"AND dp.dig_id = c.dig_id " 
        +"AND a.artist_id = ca.artist_id " 
        +"AND c.cd_id = ca.cd_id " 
        +"AND prod_id ="+ "'" + p.getProd_id() + "'"; 

      pstmt = conn.prepareStatement(queryString); 
      pstmt.setString(1, p.getProd_id()); 
      pstmt.setString(2, p.getProd_type()); 
      pstmt.setString(3, p.getAlbumName()); 
      pstmt.setDouble(4, p.getCostPrice()); 
      pstmt.setDouble(5, p.getSellPrice()); 
      pstmt.setInt(6, p.getCurrent_stock()); 
      pstmt.setString(7, p.getAge_rating()); 
      pstmt.setString(8, p.getGenre()); 
      pstmt.setString(9, p.getPublisher()); 
      pstmt.setDouble(10, p.getLength()); 
      pstmt.executeUpdate(); 


      updateAlbum(p); 

      }catch (Exception ex) 
       { 
       System.out.println(ex); 
     } 
    } 
+1

왜 마지막 prod_id 변수화하지 않았다 :

시도는이 질문을보고? – Kayaman

+0

나머지 작업을 할 때 그것을 바꿀 것입니다. 다른 사람들처럼했을 때 다른 오류가 발생했습니다. – Johntk

+0

이 SQL이 제대로 실행됩니까? – Giri

답변

3

UPDATE some_table SET [fields_list] FROM [tables] WHERE [predicates]납니다 잘못된 SQL 구문입니다. 저장 프로 시저 호출이 아니면 한 쿼리에서 여러 테이블의 필드를 업데이트하는 것은 불가능합니다.

UPDATE table_name SET [fields_list] WHERE [predicates]을보십시오. How to update multiple tables at the same time?

+0

FROM을 제거하면이 쿼리가 작동하지 않습니다. 쿼리에서 업데이트 할 테이블을 어떻게 알 수 있습니까? – Johntk

+1

** 하나의 ** UPDATE 쿼리 당 ** 테이블의 필드를 업데이트해야합니다. –

+0

기본 구문은 SQL Server에서 유효하지만'[tables]'의 구문이 아닌'some_table' 만 업데이트 할 수 있습니다. –

관련 문제