【问题标题】:Java sql error when trying to update database尝试更新数据库时出现 Java sql 错误
【发布时间】:2021-07-01 15:24:49
【问题描述】:

当我尝试通过按钮触发的更新方法更新数据库时遇到 sql 语法问题

这是按钮代码

update.addActionListener(e -> {

               int i = table.getSelectedRow();
               if (i >= 0) {
                   model.setValueAt(PackId.getText(), i, 0);
                   model.setValueAt(PackName.getText(), i, 1);
                   model.setValueAt(VendorName.getText(), i, 2);
                   model.setValueAt(PackValue.getText(), i, 3);
                   try {
                       updatepacks(PackId,PackName,VendorName,PackValue);
                   } catch (SQLException throwables) {
                       throwables.printStackTrace();
                   }

               } else {
                   System.out.println("Update Error");
               }

更新方法代码

public void updatepacks(JTextField PackId, JTextField PackName, JTextField VendorName, JTextField PackValue) throws SQLException {


        try{
            Connection conn = DriverManager.getConnection("jdbc:sqlite:packsver3.db");
            String sqlupdate = "Update  packs" + " SET PackName = ?" + " VendorName = ?"  + "PackValue = ? " + "Where PackId = ? ";
            try (PreparedStatement ps = conn.prepareStatement(sqlupdate)) {
                ps.setString(1, String.valueOf(PackId));
                ps.setString(2, String.valueOf(PackName));
                ps.setString(3, String.valueOf(VendorName));
                ps.setString(4, String.valueOf(PackValue));
                ps.executeUpdate();
            }


        } catch (Exception e) {
            e.printStackTrace();

            }
        }

还有错误

【问题讨论】:

  • hmmm,以及开始那些 ps.setString(1, String.valueOf(PackId)); ps.setString(2, String.valueOf(PackName)); ps.setString(3, String.valueOf(VendorName)); ps.setString(4, String.valueOf(PackValue));实际上不匹配的顺序?你有你的SQL语句.....packName应该是第一个,然后是vendorName,等等我建议你实际上检查它们是否为空/null :)
  • 你也可以查看String.valueOf(PackId)的返回值。对我来说,这并不明显返回 JTextField 中包含的文本。

标签: java sql syntax


【解决方案1】:

您错过了UPDATE 语句中的逗号。它应该看起来像:

String sqlupdate = "Update  packs" 
  + " SET PackName = ?, " // added comma at the end
  + " VendorName = ?, " // added comma at the end
  + "PackValue = ? "
  + "Where PackId = ? ";
       

【讨论】:

  • 感谢您的帮助我得到它来更新我的 gui 表以让数据库显示它。
最近更新 更多