带有PostgreSQL的Java JDBC:PreparedStatement使用Add Column Query执行返回false

Kri*_*hna 0 java sql postgresql ddl jdbc

我正在尝试将列添加到数据库表和

PreparedStatement  ps = con.prepareStatement(query);  
ps.execute();
ps.close();
Run Code Online (Sandbox Code Playgroud)

查询就像(有效的SQL)

ALTER TABLE mytable ADD COLUMN mycolumn datatypeinfo
Run Code Online (Sandbox Code Playgroud)

无论如何,它执行正常,并创建列.但execute语句返回false.我尝试使用executeUpdate并返回0行.

请注意,整个事情都在con.setAutoCommit设置为false的事务中.所以我不确定这是不是问题.问题是我必须先创建列才能继续进行其他更新查询.所以它必须在一个事务中运行.

a_h*_*ame 5

返回值execute()不表示它是否成功,但是如果运行的查询返回结果.

由于ALTER TABLE不返回结果,execute()正确返回false

来自Javadocs的引用:

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

  • 如果失败,它将抛出异常. (4认同)