java - 如何在 java 中的 con.commit() 之后刷新表?
问题描述
我正在使用 java 在表 MY_TABLE 中创建一个新寄存器,然后我正在执行查询以获取该表的 max(id)。但是,Java 正在获取前一个。我是说:
mybean.store(con)
con.commit();
pstm = con.prepareStatement("SELECT MAX (ID) FROM MY_TABLE");
rs = pstm.executeQuery();
while (rs.next()){
id = rs.getString("ID");
System.out.println("id: " +id);
}
在 con.commit(); 之前 该表的最大(ID)= 3
在 com.commit() 之后,表的 max(ID)=4
但我得到 MAX(ID)=3
有人可以帮我解决这个问题吗?
解决方案
PreparedStatement
如果您没有参数化查询,则不需要。我会Statement
在这种情况下使用。您不需要
while (rs.next())
,因为您的查询将返回单个值。我会用if (rs.next())
.您的查询没有一个名为的字段
ID
,因此rs.getString("ID")
会抛出SQLException
. 您应该在查询中使用rs.getString(1)
或使用别名(例如maxId
在下面显示的示例中)。此外,您应该使用getInt
而不是getString
.Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT MAX(ID) AS maxId FROM MY_TABLE"); int id = Integer.MIN_VALUE; if (rs.next()) { id = rs.getInt(1); //id = rs.getInt("maxId"); } System.out.println(id);
推荐阅读
- python - 如何避免多次加载模块?
- python - 如何在 GIT 和 python 中具有分支特定变量
- .net-core - 读取本地存储的图像作为背景图像进行减法
- excel - 防止用户在用户表单中输入之前的日期
- python - 我应该如何在静态图像 api 的 URL 中添加 geojson?
- vba - 如何使用 VBA 通过 Shadow DOM 单击元素?
- azure - 如何从 Azure Functions 接收事件消息以获取 WebApp 中的内容?
- excel - 根据可选过滤条件计算 Excel 中的行数
- javascript - 在 vue 测试 utils 中 $refs 设置为空对象
- openmodelica - OpenModelica:如何为 MSL 4.0.0 安装包(ModelicaServices)?