2014-05-12 3 views
0

나는 어디서나이 답변을 찾을 수없는 것 같습니다. 자바 클래스를 사용하여 기존 데이터베이스 항목을 업데이트하려고합니다. 사용자는 JSP 페이지의 양식에 세부 정보를 입력 한 다음 서블릿을 호출하고이 값을 사용자 객체에 할당합니다. 그런 다음이 객체를 편집 프로필 메서드에 전달하여 데이터베이스 작업을 수행합니다.자바를 사용하여 데이터베이스 항목 업데이트

개체를 병합하려고하면 업데이트 쿼리를 만들고 업데이트하지 않고 전달할 때 새 항목이 만들어집니다. 누군가 제게 java를 사용하여 업데이트를 수행하는 방법에 대한 예를 들려 주시겠습니까?

자바 : 당신이 바로 JDBC와 JPA를 혼동처럼

public static void editUserProfile(User editUser) { 

    try{ 
     factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     EntityManager em = factory.createEntityManager(); 
     System.out.println("In edit profile Method"); 

     int ID = editUser.get_Id(); 
     String name = editUser.getName(); 
     String address1 = editUser.getAddress1(); 
     String address2 = editUser.getAddress2(); 
     String county = editUser.getCounty(); 
     String phone = editUser.getTelephone(); 
     String email = editUser.getEmail(); 
     String website = editUser.getWebsite(); 
     String information = editUser.getInformation(); 
     String password = editUser.getPassword(); 
     String searchQuery = "UPDATE User SET name='"+name+"' address1='"+address1+"' address2='"+address2+"' " 
          + "county='"+county+"' phone='"+phone+"' email='"+email+"' website='"+website+"' " 
          + "information='"+information+"' password='"+password+"' WHERE id='"+ID+"'"; 

     // Update user in the database 
     em.getTransaction().begin(); 
     //Query r = em.createNativeQuery(searchQuery); 
     em.merge(searchQuery); 

     em.getTransaction().commit(); 

     em.close(); 
+0

쿼리에 string-bash를 사용하지 말 것을 강력히 권장합니다. PreparedStatement를 만들고 변수를 추가하십시오. 그렇지 않으면 나중에 모든 종류의 SQL 주입 문제가 발생합니다. –

+0

오류 : JPA에서 createQuery 및 명명 된 매개 변수를 사용하십시오. –

+0

@Tripp Kinetics는 제게 제발 제발 도와 주실 래요? – SteveK

답변

1

보인다.

JPA의 좋은 개관합니다 (그것을 모두 함께 부분을 넣어 참조)

https://glassfish.java.net/javaee5/persistence/persistence-example.html

당신이 정말로 객체를 업데이트하고해야 할 때 문자열과 때 em.merge()를 호출 여기 그런 다음 엔티티 관리자에게 변경 사항을 병합하여 데이터베이스에 저장하도록 지시합니다.

당신이 만든 UPDATE 문은 JDBC를 사용하는 것과 비슷하지만 Connection/PreparedStatement와 함께 사용 하시겠습니까? 매개 변수에 대한/등 ... 비록 당신의 샘플 코드는 JPA 기반으로 보인다.

관련 문제