Determine DDL statement in jdbc
我正在编写一个执行不同sql语句(查询,dml,ddl,dcl)的程序。如何确定执行的语句(方法boolean Statement#execute(String s))是ddl还是dcl。我知道如何确定查询。当execute()方法返回true时,该语句是一个查询,当statement#execute()返回值为false时,该语句可以是dml,ddl或dcl。那么如何确定语句的类型呢?
结果的存在(execute() == true)不一定表示查询。例如在PostgreSQL中,DELETE语句也可以返回结果(使用returning子句时)。
要处理语句的所有结果或更新计数,您需要实现一个循环,该循环遵循getMoreResults()的Javadocs记录的准则:
There are no more results when the following is true:
// stmt is a Statement object
((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))
- 我已经编辑了我的问题。我之前没有告诉我我正在使用oracle
-
@maks:获取所有结果和更新计数的规则仍然适用。
-
如果execute(String sql)只能获取一个查询作为参数,execute()方法如何返回多个结果集?
-
使用Javadocs中的loop语句可确保您正在处理该语句返回的所有内容。这就是我要说的。这是最便携的方式。