【发布时间】:2020-06-24 16:44:26
【问题描述】:
我试图从我的 Java 程序中刷新 Postgresql 中的物化视图:
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
【问题讨论】:
标签: java postgresql jdbc