【问题标题】:How to get the primary key to execute an update statement [closed]如何获取主键来执行更新语句[关闭]
【发布时间】:2016-03-02 20:10:35
【问题描述】:

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

代码

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

【问题讨论】:

  • 我不明白你在问什么,也许你应该改一下
  • 检查您的数据库以查看它是否已更新。我希望这就是你的意思。参考这个docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
  • 不,我没有运行我的数据库。因为在我的索引 3 中。我不知道我会先做什么,所以我可以执行我的查询。我需要用返回类型包装我的整个代码吗?谢谢。
  • 如果您正在谈论登录用户 ID,那么您可以使用会话来获取用户 ID,或者如果您正在谈论员工用户 ID,那么它应该在您的员工 Tf 中,请再次检查您的数据库或发布您的整个代码

标签: java sql jdbc


【解决方案1】:

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

  1. 从数据库中读取记录
  2. 将记录中的数据放入您的 GUI 控件中,同时将 ID 值保存在某处
  3. 现在用户点击“保存”:您将值从 GUI 控件传输到 PreparedStatement 并使用第 2 步中的 ID 构建 where 参数。
  4. 提交。

如果要创建新记录,请跳过第 1 步,因此没有 ID 值。 然后,您需要执行 INSERT,而不是在第 3 步中执行 UPDATE。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 所以如果我做了我的方法,我会包装整个代码吗?谢谢。
    猜你喜欢
    • 2016-06-16
    • 2021-12-01
    • 2015-04-08
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多