0

我最近遇到了一个非常大的问题,这花了我很多时间来调试。我有一个更新语句,它更新表中的 32 列。我用 PreparedStatement 做到了这一点。不小心我删除了一个 setParameter() 调用,所以更新无法成功完成。

我从 JDBC (Apache Derby) 得到异常,告诉:“至少一个参数未初始化”并且无法确定未设置哪个参数,因为驱动程序不会告诉您至少第一个参数的名称或序号没有设置...

我在谷歌上搜索某些实用程序未成功,该实用程序将从(即将完成的)准备好的语句中生成普通的旧 SQL。这在这种情况下会有很大帮助,因为我将能够看到未设置的内容。

有没有人遇到过这个问题?有什么解决办法吗?

4

2 回答 2

2

看看P6Spy。它可以拦截所有 JDBC 调用并在将它们转发到数据库之前将它们记录下来。

或者,考虑使用 Springs JDBCTemplate,它可以消除您的大量样板 JDBC 编码并帮助避免此类错误。你不需要 Spring 框架的其余部分来使用这个位。

于 2009-03-23T09:14:15.487 回答
0

由于准备好的语句中的参数只是 PreparedStatement 对象中的列表或映射,您应该能够检查这些值。

您还可以在 jdbc 驱动程序周围编写一个非常简单的 Wrapper,它创建包装的 PreparedStatements 并在实际执行语句之前记录所有参数和设置。

于 2009-03-23T09:29:00.507 回答