【问题标题】:How can I get an error or a warning from a PreparedStatement?如何从 PreparedStatement 中获得错误或警告?
【发布时间】: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 也是自动提交时抛出的异常吗?

标签: java sqlite jdbc


【解决方案1】:

executeUpdate 返回语句修改的行数。您可以检查此结果是否为0,如果是,则记录您自己的警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多