如何使用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语句返回的值,则会有结果。 查看文档