我正在尝试将列添加到数据库表中并
PreparedStatement ps = con.prepareStatement(query);
ps.execute();
ps.close();
查询类似于(有效的SQL)
ALTER TABLE mytable ADD COLUMN mycolumn datatypeinfo
无论如何,它执行正常并且创建了列。但execute语句返回false。我尝试使用executeUpdate并返回0行。
请注意,整个事情都在con.setAutoCommit设置为false的事务中。所以我不确定这是不是问题。问题是我必须先创建列才能继续进行其他更新查询。所以它必须在交易中运行。
答案 0 :(得分:5)
execute()
的返回值并不表示它是否成功,但是如果运行的查询返回了结果。
由于ALTER TABLE
未返回结果,execute()
正确地返回false
来自Javadocs:
的引用返回:如果第一个结果是ResultSet对象,则返回true ; false 如果第一个结果是更新计数或没有结果