使用java更新数据库条目

时间:2014-05-12 20:21:46

标签: java mysql jsp

我似乎无法在任何地方找到直接的答案,我正在尝试使用java类更新现有的数据库条目。用户在jsp页面上以表单形式输入其详细信息,然后调用servlet并将这些值分配给用户对象。然后将该对象传递给编辑配置文件方法以执行数据库操作。

当我尝试合并它时,它创建一个新条目的对象,当我创建更新查询并传递它没有更新时。有人可以给我一个如何使用java进行更新的例子。

Java:

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();

1 个答案:

答案 0 :(得分:1)

您似乎将JPA与直接JDBC混淆。

这里有一个关于JPA的概述(参见将所有内容放在一起)

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

您正在使用String调用em.merge(),当您真正要更新对象然后告诉实体管理器合并更改(将它们保存到数据库中)时。

您制作的UPDATE语句与您使用JDBC的方式有关,但您是否使用了Connection / PreparedStatement?对于参数/ etc ...看起来好像你的示例代码是基于JPA的。