【问题标题】:SQL PreparedStatement & autocommitSQL PreparedStatement 和自动提交
【发布时间】:2012-06-04 14:34:24
【问题描述】:

如果我使用“自动提交关闭”的 JDBC 连接创建准备好的语句,我需要调用 commit() 来使事务永久化还是只需要准备调用就足够了?请注意,我只想准备一个语句并保留它以供以后执行。

非常感谢!

【问题讨论】:

    标签: jdbc prepared-statement autocommit


    【解决方案1】:

    答案是:是的,你必须调用 commit。

    “准备”步骤不做任何与服务器上的事务处理相关的事情。

    你必须调用executeUpdate()(或execute())来启动一个事务(假设使用的SQL确实启动了一个事务)

    使用没有自动提交的 PreparedStatement 需要以下步骤:

    1. 准备声明
    2. 设置参数值
    3. 致电executeUpdate()(或execute(),具体取决于语句类型)
    4. 致电Connection.commit()

    为了让事情更清楚:调用prepareStatement() 确实不需要需要commit()

    【讨论】:

    • 实际上,我有几个 CRUD SQL 语句,我希望在初始化(连接池的)连接对象时将它们作为准备好的语句准备好。稍后,我的应用程序可以通过设置适当的参数并在需要时调用 commit() 来执行这些准备好的语句。所以我想知道我是否需要在准备调用之后调用提交,但如果我理解正确的话,在我调用执行之前准备不会在服务器上做任何事情?
    • @AliM:这并没有改变打电话给executeUpdate()commit()的任何事情
    • 你收到我上一篇文章的最后一部分了吗?所以你的回答仍然适用吗?
    • @AliM:哪个“以前的帖子”? 准备语句不需要需要提交。
    • 没问题..我得到了答案!为了让事情更清楚:调用 prepareStatement() 不需要 commit()。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2021-03-04
    • 2013-04-24
    • 2021-08-28
    • 2014-11-25
    相关资源
    最近更新 更多