我尝试从我的Java程序中刷新PostgreSQL中的物化视图:
根据文档,execute()方法可用于任何类型的SQL语句:
执行此PreparedStatement对象中的SQL语句,它可以是任何类型的SQL语句。
注意: 在程序的这一部分,我不需要了解结果,因此返回值不重要。
该代码在数据库中没有实际操作,物化视图未更新,但在java程序中未抛出错误/异常。 经过一番搜索,我使用相同的代码,但使用executeUpdate()。
conn = AbstractClientDao.getJdbcConnection();
pst = conn.prepareStatement("REFRESH MATERIALIZED VIEW mv_my_materialized_view;");
pst.execute();
conn.close();
根据文档,execute()方法可用于任何类型的SQL语句:
执行此PreparedStatement对象中的SQL语句,它可以是任何类型的SQL语句。
注意: 在程序的这一部分,我不需要了解结果,因此返回值不重要。
该代码在数据库中没有实际操作,物化视图未更新,但在java程序中未抛出错误/异常。 经过一番搜索,我使用相同的代码,但使用executeUpdate()。
conn = AbstractClientDao.getJdbcConnection();
pst = conn.prepareStatement("REFRESH MATERIALIZED VIEW mv_my_materialized_view;");
pst.executeUpdate();
conn.close();
从文档中可以看到,executeUpdate() 方法适用于任何类型的 SQL 语句:
在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(DML)语句,例如 INSERT、UPDATE 或 DELETE;或者是一个不返回结果的 SQL 语句,例如 DDL 语句。
此代码有效并正确更新了视图。
我是否漏掉了什么,或者文档没有清楚地说明 execute() 和 executeUpdate() 之间的区别?
注意:Java8,Postgresql 9.6,驱动程序 org.postgresql,版本 9.3-1101-jdbc41。