Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java更新数据库条目_Java_Mysql_Jsp - Fatal编程技术网

使用java更新数据库条目

使用java更新数据库条目,java,mysql,jsp,Java,Mysql,Jsp,我似乎在任何地方都找不到直接的答案,我正在尝试使用java类更新现有的数据库条目。用户在jsp页面上的表单中输入他们的详细信息,然后jsp页面调用servlet并将这些值分配给用户对象。然后将此对象传递给编辑配置文件方法以执行数据库操作 当我尝试将其与对象合并时,它会创建一个新条目,当我创建更新查询并传递它不更新的消息时。有人能给我举个例子,说明如何使用java进行更新吗 Java: public static void editUserProfile(User editUser) {

我似乎在任何地方都找不到直接的答案,我正在尝试使用java类更新现有的数据库条目。用户在jsp页面上的表单中输入他们的详细信息,然后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();

您似乎混淆了JPA和纯JDBC

这里有一个很好的JPA概述(请参阅将所有内容放在一起的部分)

您正在使用字符串调用em.merge(),此时实际上应该更新对象,然后告诉实体管理器合并更改(这会将更改保存到数据库)


您所编写的UPDATE语句在某种程度上是使用JDBC的方式,但是您将使用Connection/PreparedStatement?有关参数/等。。。似乎您的示例代码是基于JPA的。

我强烈建议您不要将bash串入查询中。创建PreparedStatement并在中添加变量。否则,您以后会遇到各种SQL注入问题。呃,在JPA中,请使用createQuery和命名参数。@Tripp Kinetics您介意给我举个例子吗?我一直在寻找更好的例子。这是迄今为止我发现的最好的一个:它应该类似于
em.merge(editUser)
而不是
em.merge(searchQuery)。然后,您需要做的就是让
User
成为一个合适的JPA实体。之后,你需要去掉你的代码中间部分的代码> EddiuSeriPrime<代码>方法(因为它们将是无用的)。最后,您还需要正确地实例化
EntityManager
、它的“工厂”和PU。就这样,你完了。