如何获取主键来执行更新语句

时间:2016-03-02 20:10:36

标签: java sql jdbc

我正在尝试使用Java JDBC更新我的表。但我不知道如何使用Prepared Statement调用我的主键。我尝试为我的数据库列创建一个USER_ID对象,但不知道从哪里开始。我如何确定我是否已经更新了我的数据库?

CODE

String updateEmployee = employeeTf.getText();
String updateDepartment = departmentTf.getText();

if(updateEmployee.isEmpty() && updateDepartment.isEmpty()){
    JOptionPane.showMessageDialog(null, "You didn't update it");
}
else if(updateEmployee.isEmpty()){
    JOptionPane.showMessageDialog(null, "Please update your name");
}
else if(updateDepartment.isEmpty()){
    JOptionPane.showMessageDialog(null, "Please update your department");
}
else{
    String updateQuery = "UPDATE SAMPLE SET EMPLOYEENAME = ?, DEPARTMENT = ? WHERE USER_ID = ?";

    try(Connection con = DBUtilities.getConnection(DBType.JDBC);
        PreparedStatement myPs = con.prepareStatement(updateQuery);){


        myPs.setString(1, employeeTf.getText());
        myPs.setString(2, departmentTf.getText());
        myPs.setInt(3, "WHAT GOES HERE");
        //Execute insert SQL Statement
        myPs.executeUpdate();
        System.out.print("Updated");
    } catch (SQLException ex) {
        DBUtilities.processException(ex);
    }
}

2 个答案:

答案 0 :(得分:2)

如果您正在进行更新,则记录必须已存在于您的表中。 您的应用程序大致需要以下过程:

  1. 从数据库中读取记录
  2. 将记录中的数据放入GUI控件中,并将ID值保留在某处
  3. 现在用户点击“保存”:您将GUI控件中的值传输到PreparedStatement,并使用步骤2中的ID构建where参数。
  4. 提交。
  5. 如果要创建新记录,请跳过步骤1,因此没有ID值。 然后,不需要在步骤3中执行UPDATE,而是需要执行INSERT。

答案 1 :(得分:0)

我认为employeeIf对象应该有一个像getUserId()这样的方法来返回该员工的UserId。我不确定你是如何构建这个employeeIf对象的,但总是应该有一些方法来获取该员工的userId。所以 myPs.setInt(3,“什么在这里”); 应该是这样的 myPs.setInt(3,employeeTf.getUserId());