【发布时间】:2023-03-19 10:02:01
【问题描述】:
我有一个这样的更新:
update table set col1=?,col2=?,col3=? where col4=?;
我是这样填写的:
statement.setString(1,"some_value");
statement.setString(2,"some_value");
statement.setString(3,"some_value");
我忘了添加第四个值。我做了一个executeUpdate,当然数据库没有发生任何事情。我花了大约 1 小时调试它,看看它哪里出错了。然后我修改了我的代码以打印getWarnings 方法返回的SQLWarning 对象。
它总是返回 null。在设置第四个参数之前,我什至将代码修改为错误状态,但仍然没有警告。有谁知道如何获得错误/警告?
如果重要,我的 Connection 设置为 autoCommit。
【问题讨论】:
-
您的代码是否捕获并吞下了异常?
-
不,所有异常都会打印完整的堆栈跟踪。
-
这显然是特定于 JDBC 驱动程序或 SQLite JDBC 驱动程序中的“错误”。根据我的经验,如果缺少参数,MySQL 和 PostgreSQL 都会抛出一个自我解释的 SQLException。例如,MySQL 会在这里抛出
java.sql.SQLException: No value specified for parameter 4。 -
@BalusC 也是自动提交时抛出的异常吗?