Java execute()vs executeUpdate()以刷新Postgresql中的实例化视图

问题描述 投票:3回答:1

我正在尝试从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
1个回答
0
投票

答案:此代码的两个版本之间没有区别。我的问题是由于数据库中的比赛条件。

© www.soinside.com 2019 - 2024. All rights reserved.