我似乎无法在任何地方找到这个问题的直接答案,我正在尝试使用 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();
最佳答案
您似乎将 JPA 与直接 JDBC 混淆了。
此处是 JPA 的详细概述(请参阅将其全部放在一起的部分)
https://glassfish.java.net/javaee5/persistence/persistence-example.html
当您真正应该更新对象,然后告诉实体管理器合并更改(将它们保存到数据库中)时,您正在使用字符串调用 em.merge()。
您制作的 UPDATE 语句类似于您使用 JDBC 执行的方式,但是您将使用 Connection/PreparedStatement 与 ?对于参数/等...看起来您的示例代码是基于 JPA 的。
关于java - 使用 java 更新数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23618147/