【问题标题】:how to get true or false using execute() in Java Statement [duplicate]如何在Java语句中使用execute()获取真或假[重复]
【发布时间】:2015-06-13 19:38:53
【问题描述】:

我有一个名为 stmtStatement 对象,Connection 对象 conn

stmt = conn.createStatement();
boolean b = stmt.execute("INSERT INTO employee VALUES('E001', 'Smith')")

但这总是产生 false。如果上述查询成功执行,我想要 true,如果查询执行失败,我想要 false。如何使用 execute() 方法实现该结果。

【问题讨论】:

    标签: java execute


    【解决方案1】:

    如何使用 execute() 方法实现该结果。

    你不能。如果结果有ResultSet,它只会返回true。如果您的插入有问题,该方法将抛出异常。来自documentation

    boolean execute(String sql) 抛出 SQLException

    返回:

    如果第一个结果是 ResultSet 对象,则为真;如果是更新计数或没有结果,则为 false

    投掷:

    SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法,在 PreparedStatement 或 CallableStatement 上调用该方法

    SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并至少尝试取消当前正在运行的语句时

    【讨论】:

    • 非常感谢。我很困惑。感谢您的澄清。
    【解决方案2】:

    尝试在Statement 上使用executeUpdate() 方法。它应该返回一个表示行数的 int。

    【讨论】:

      【解决方案3】:

      Statement.ececute() 如果第一个结果是 ResultSet 对象,则返回 true,如果是更新计数或没有结果,则返回 false

      你可以使用

      int executeUpdate(String sql)

      返回

      1) SQL 数据操作语言 (DML) 语句的行数 或

      2) 0 表示不返回任何内容的 SQL 语句

      Docs

      【讨论】:

        【解决方案4】:

        如果不是选择查询,则不能。
        这是文档中所说的

        Returns:  
        true if the first result is a ResultSet object; false if it is an update count or there are no results`.
        

        当您给出选择查询而不是在插入或更新时,您将得到一个结果集,在这些类型的查询的情况下,您总是会得到 false。
        现在要确定它是否成功运行,我想使用 e Exceptions 会帮助你

        使用executeUpdate() 将为您提供行数,以便您使用它进行预测。

        【讨论】:

          【解决方案5】:

          您正在执行插入语句,如果有一个结果集具有从执行语句返回的值,则会有一个结果。 Check the documentation

          【讨论】:

            猜你喜欢
            • 2014-02-17
            • 2021-04-11
            • 2021-04-15
            • 1970-01-01
            • 2020-12-06
            • 1970-01-01
            • 2019-10-06
            • 1970-01-01
            • 2011-01-13
            相关资源
            最近更新 更多