Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数据库到表单实现下一个和上一个_Java_Mysql_Database_Resultset - Fatal编程技术网

Java 从数据库到表单实现下一个和上一个

Java 从数据库到表单实现下一个和上一个,java,mysql,database,resultset,Java,Mysql,Database,Resultset,我在执行这个案子时遇到了一个问题 1一些示例表明,我们可以使用如下所示: try{ bd.conectarBaseDeDatos(); PreparedStatement stmt; String sql=("SELECT * FROM cab_pedido a, det_pedido b WHERE a.numero = b.numero and a.cod_agencia = b.cod_a

我在执行这个案子时遇到了一个问题

1一些示例表明,我们可以使用如下所示:

        try{   
        bd.conectarBaseDeDatos();
                PreparedStatement stmt;
                String sql=("SELECT * FROM cab_pedido a, det_pedido b WHERE a.numero = b.numero and a.cod_agencia = b.cod_agencia");     
                System.out.println(sql);
                stmt = bd.conexion.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 
                bd.result = stmt.executeQuery(sql);
        }
    catch (InstantiationException | IllegalAccessException | SQLException e){ System.out.println(e);}  
       return rs;
}
这将返回我的结果集,我可以使用rs.next。rs.previous等来解决我的问题,但我看到一些评论说我们应该关闭rs和db连接。这有多危险?我可以在不关闭结果集和连接的情况下实现吗?因为当我们关闭resultSet时,我将无法再获取数据

2将数据存储到Hashmap或list中 这是另一种可能性,但如果我想得到最后一个或第一个值,我该怎么做

我需要next、prev、last和first函数,但我不确定我的第一个实现

谁能给我一些关于如何开始的建议。
我需要解决方案和建议。重复说明什么都没有。

我将尝试在这里开始回答,因为我没有评论的选择,但从您的代码和问题中可以理解的是:

您有一个结果集,希望从中读取第一个、最后一个、上一个、下一个等数据集。 关闭数据库连接资源 使用HashMap或List 好的,从目前为止的情况来看,您完全可以将结果集中的数据读入列表或HashMap

第二,关闭资源,是的!您应该始终关闭数据库连接资源以避免内存泄漏。您可以通过在代码中的catch块之后添加finally块来实现这一点

在地图或列表上。如果您不确定要从结果集中读取的数据类型,请使用列表的一些实现,例如ArrayList。如果您知道数据将有键和值,那么您可以选择HashMap


这些只是一般准则。如果您发布更多的代码,也许我们可以进一步提供帮助。

回答1-这是一个重复的问题

当您关闭数据库连接时。结果集和语句也将关闭。 但这并不是一个有保证的行动。因此,您应该关闭所有数据库资源

还考虑在连接池中允许打开的DB连接的最大NO设置为固定数的情况。您最终将达到这一目标,而您的应用程序将崩溃或无法正确响应

这不仅适用于数据库连接/结果,而且适用于所有IO资源。 作为一种良好的做法,您应该在使用完所有IO资源后关闭它们

不这样做只会留下内存泄漏的原因

对第2条的答复

在关闭resultset之前,最好将信息/数据移动到适当的数据结构中。这是我们经常面临的更多的实现场景。 再次使用的数据结构形式将基于场景。但在所有情况下,您都可能希望使用Bean类/POJO来存储所获取的每一行的相关信息,因为每一行都有多个值

另一个建议是不要通过JDBC执行select*调用。这不是很有用。您最好提及列名,这将允许您控制要提取到resultset中的数据,在许多情况下还可以使查询执行更快