微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java.sql.SQLException: 没有为参数 5 指定值更新数据库

如何解决java.sql.SQLException: 没有为参数 5 指定值更新数据库

当我尝试将 JTable/JTextFields 更新到我的 sql 数据库时,对话框中出现以下错误代码means

我在网站上查过类似的问题,但似乎没有解决我的问题。我检查了数据库,检查了我的连接代码,更新代码,但找不到这个额外的参数应该在哪里?请帮助新的初学者!

所以现在我明白问题出在我怀疑的 mask 处,但我的 id 仅作为行计数/主键存在于我的 sql 数据库中,因此它会因您的行而有所不同选择/点击,所以我不能在 True 预先设置一个特定的值。然后插入什么 - 这样我就不会丢失 JTable 中客户列表中的自动行计数?

java.sql.sqlException: No value specified for parameter 5

解决方法

Class.forName("com.mysql.cj.jdbc.Driver");

这可以删除。已经 20 年没有必要了。

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/num klienter","root","");

这是内存泄漏;连接已打开,并将永远保持打开状态;您的 SQL 服务器将只允许少数几个打开的连接,因此很快您的 MySQL 服务器将无法被任何服务(包括此 java 代码)访问,直到您杀死关闭连接的 java 应用程序。对您创建的所有资源使用 try with resources

PreparedStatement pst = con.prepareStatement("SELECT * FROM klient");

这也是一个资源,需要try-with-resources。

ResultSet rs =pst.executeQuery();

你猜对了。第三次尝试资源。如果您发现代码变得笨拙,那么 JDBC 是非常低级的,对于“最终用户”编码来说并不是那么好。使用一个很好的抽象,比如 JDBIJOOQ

columnData.add(rs.getString("Fødselsdag"));

列名中的非 ASCII 字符?那永远不会顺利。我强烈建议你不要这样做。

q = StData.getColumnCount();

for (i = 1; i <= q; i++) {

这很奇怪。 q 保存列数 - 这是查询中的列数。然后对 5 个列名进行硬编码,因此 q 始终为 5。然后,将所有 5 个值(id、Navn、Fødselsdag 等)相加,然后重复 5 次,总共运行 25 次,然后重复您的数据5次。不清楚您通过询问已知信息(从您已经知道的元数据中获取列数)来尝试完成什么。

PreparedStatement pst = con.prepareStatement("UPDATE klient SET Navn=?,Fødselsdag=?,Beskrivelse=?,Andet=? WHERE id=?");

我数了 5 个 ?,但只有 4 个 pst.setString 语句。你忘记了pst.setInt(5,theValue)

更新代码得到了关于 try-with-resources 的所有相同警告。

pst.setString(2,dayTxt.getText()+"-" + monthTxt.getText()+"-" + yearTxt.getText());

不是您如何使用 DB 进行约会。有一个 pst.setDate,但最好使用 pst.setObject,传递 java.time.LocalDate 的实例。 MySQL 是否真的支持 - 不确定,你必须检查。

,

我的问题的解决方案是为 pst. 插入第 5 个 id=? 语句,如下所示:

pst.setInt(5,table.getRowCount());
            
            
            

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?