Tag: resultset

“if(rs.next())”是什么意思?

我目前收到错误, java.sql.SQLException: Method ‘executeQuery(String)’ not allowed on prepared statement. 因为我正在使用 PreparedStatement stmt = conn.prepareStatement(sql); 并且也有 ResultSet rs = stmt.executeQuery(sql); 在我的代码中。 我现在需要删除ResultSet行,但这使我不得不处理以下代码: if (rs.next()) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(“login.successful”)); request.getSession(true).setAttribute(“USERNAME”, rs.getString(“USERNAME”)); request.getSession(true).setAttribute(“BALANCE”, rs.getString(“BALANCE”)); request.setAttribute(“msg”, “Logged in successfully”); 我不确定我完全明白什么 if (rs.next()) 确实。 有人可以向我解释这段代码吗? 如果我对此有了更好的理解,我相信我会更好地了解如何使用PreparedStatement结果和rs用于逻辑。 此外,任何有助于改变逻辑的帮助也将受到高度赞赏。

使用预准备语句批量更新在Java中批量插入

我试图用Java填充一个带有大约50,000行10列的结果集,然后使用PreparedStatement的batchExecute方法将它们插入到另一个表中。 为了使这个过程更快,我做了一些研究,发现在将数据读入resultSet时,fetchSize起着重要的作用。 拥有一个非常低的fetchSize可能导致太多的服务器访问,并且非常高的fetchSize可以阻止网络资源,所以我尝试了一点,并设置了适合我的基础设施的最佳大小。 我正在读取此resultSet并创建插入语句以插入到另一个数据库的另一个表中。 像这样的东西(只是一个样本,而不是真正的代码): for (i=0 ; i<=50000 ; i++) { statement.setString(1, "a@a.com"); statement.setLong(2, 1); statement.addBatch(); } statement.executeBatch(); executeBatch方法是否会尝试一次发送所有数据? 有没有办法定义批量大小? 有没有更好的方法来加快批量插入的过程? 批量更新(50,000行10列)时,使用可更新的ResultSet或PreparedStaement与批量执行是否更好?