【问题标题】:Why is it not updating为什么不更新
【发布时间】:2021-05-01 05:40:36
【问题描述】:

我正在尝试更新我的数据库,其中图书副本将根据图书代码更新为 5。

我在数据库中初始化的 Book 副本是 10。现在,我有一个固定值 5 来更改它。我的计划是如果用户借用它,则将副本减少 1。但是现在,我正在尝试学习如何首先更新这本书,如果它可以工作的话。

这是我的代码,其中我的数据库中的 Book 副本仍未更新到 5。

try{
    con = DriverManager.getConnection("jdbc:derby://localhost:1510/LibSyst", "student", "student");
    String updating = "UPDATE BOOKS SET copies = ? WHERE code = ?";
    ps = con.prepareStatement(updating);

    //trying to convert String to Int here
    String strCOde = bookCode.getText();
    int intCode = Integer.parseInt(strCOde);
    
    ps.setInt(7, 5);
    ps.setInt(1, intCode);
    ps.executeUpdate();
        
}catch (Exception e ){
    JOptionPane.showMessageDialog(null, "Update Failed");
}

另外,副本数据类型是数字,对吗?

【问题讨论】:

  • ps.setInt(7, 5);。你在这里做什么?应该是ps.setInt(2, 5);。其余的看起来可以更新您的记录。
  • @Ashish 我正在将 BookCopies 更新为 5。数字 7 是 BookCopies 在表中的位置,数字 5 是我希望将数字 10 转换为的固定值。这是我遵循的示例代码>>alvinalexander.com/blog/post/jdbc/…
  • 不要只打印像 "Update Failed" 这样的通用消息,请确保您还记录了整个异常,以便检查失败的原因/原因。

标签: java sql jdbc


【解决方案1】:

你犯了一个愚蠢的错误。准备好的语句中的索引从 1 开始,因此只需进行这些更改,它将按预期工作。

 ps.setInt(1, 5);
 ps.setInt(2, intCode);

【讨论】:

  • 我试过了,效果很好,谢谢!!;-;我认为括号内的第一个数字是表中列的位置 huhu
  • @roboto 你需要这样做。
  • @Ashish 我试过了,它奏效了!谢谢大家帮助我!
  • @roboto 索引是查询文本中参数的从1开始的索引(第一个?是1,第二个是2,等等)
猜你喜欢
  • 1970-01-01
  • 2019-05-13
  • 2017-10-10
  • 2019-08-10
  • 2019-07-16
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多