java - 如何从java中的executeUpdate OR update中获取值?

Posted

技术标签:

【中文标题】java - 如何从java中的executeUpdate OR update中获取值?【英文标题】:How to get a value from an executeUpdate OR update in java? 【发布时间】:2019-07-26 17:46:38 【问题描述】:

我试图从 postgresql 更新中获取一些返回数据。 “更新”在 DB 脚本中运行良好,但在 java 中我遇到了一些问题:代码在执行查询时卡住了。

我正在尝试使用“PreparedStatament ps”、“ResultSet rs=ps.executeQuery”和“if(rs.next)”从查询中的“返回”中获取数据,但似乎代码没有进入那里,因为它正好卡在“ps.executeQuery”中。

这或多或少是我想要做的:

String cVal="";
ps=myConn.prepareStatement("UPDATE someTable SET aValue=? WHERE bValue=? 
returning Cvalue");
ps.setInt(1,"aNewValue");
ps.setInt(2,"aID");
rs=ps.executeQuery();
if (rs.next())
  cVal=rs.GetString("Cvalue");
  return true;
else
  return false;

我正在尝试将“返回”的值设置为一些变量。我要设置 4 个结果。

【问题讨论】:

使用executeUpdate();用于更新、插入和删除,而不是 executeQuery() 【参考方案1】:

由于您正在尝试更新,因此在 PreparedStatement 的情况下,您必须使用 executeUpdate() 方法。

要了解有关 Statement 和 PreparedStatment 中方法的更多详细信息,请查看以下

https://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html#executeUpdate--

您可以参考下面的示例。 https://www.mkyong.com/jdbc/jdbc-preparestatement-example-update-a-record/

【讨论】:

我知道 executeUpdate 返回 1 或 0,但是如何从返回中获取值?只有在executeUpdate中是否有任何类型的“rs.get ...”?? 您将使用更新查询获得受影响的行数。【参考方案2】:

首先使用ps.executeUpdate ()执行更新语句,返回整数01。该值指示更新语句是否已执行。之后,执行 select 查询,获取更新后的数据。

【讨论】:

为了便于阅读,请考虑在答案中添加标点符号。

以上是关于java - 如何从java中的executeUpdate OR update中获取值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 java 中的组件获取 BufferedImage?

如何从Java中的字节数组中获取数据?

如何从 Java 中的 Java 列表创建 scala.collection.immutable.Seq?

java - 如何使用Java从文件夹中的所有文件中一一读取数据? [复制]

java - 如何从Java中的String中删除不同数量的空格? [复制]

java - 如何从Java Spring Boot中的请求标头获取不记名令牌?