如何使用Java语句中的execute()获取true或false

我有一个名为stmt的 Statement对象,Connection对象conn

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

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

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

你不能。 如果结果具有ResultSet ,它将仅返回true 。 如果插入有问题,该方法将抛出exception。 从文档 :

boolean execute(String sql)抛出SQLException

返回:

如果第一个结果是ResultSet对象则为true;否则为false 。 如果是更新计数或没有结果,则返回false

抛出:

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

SQLTimeoutException – 当驱动程序确定已超出setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的Statement时

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

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

您可以使用

int executeUpdate(String sql)

回报

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

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

文件

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

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

当您提供选择查询而不是插入或更新时,您将获得结果集,在这些类型的查询的情况下,您将始终获得错误。
现在要确定它是否成功运行我猜想使用e Exceptions会对你有所帮助

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

您正在执行insert语句,如果有一个结果集具有从execute语句返回的值,则会有结果。 查看文档