0

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

PreparedStatement  ps = con.prepareStatement(query);  
ps.execute();
ps.close();

查询类似于(有效的 SQL)

ALTER TABLE mytable ADD COLUMN mycolumn datatypeinfo

无论如何,它执行得很好并创建了列。但是执行语句返回 false。我尝试使用 executeUpdate 并返回 0 行。

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

4

1 回答 1

5

的返回值execute()并不表示是否成功,而是表示运行的查询是否返回了结果。

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

引用Javadocs

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

于 2012-05-02T18:12:27.633 回答