Java 如何处理结果集数据

Java 如何处理结果集数据,java,jdbc,Java,Jdbc,我的成绩集中有很多记录。我关注的是: 结果集如何在内部处理这些记录?及 程序员如何分批处理这些记录以避免内存问题的发生 等待你的回答。。 非常感谢在遍历结果集时,您可以使用它来控制提取到内存中的记录数。但总的来说,我认为这取决于JDBC驱动程序如何处理该设置以及如何在内存中存储获取的记录 编辑:以下是一个示例(理论上,结果集在内存中只保留1条记录): 你说的“缺少记录”是指数十万条记录,是吗?在印度以外,并非所有人都理解“lakh”:)我用“lot”代替了“lakh”。顺便说一句,“缺乏”的意思

我的成绩集中有很多记录。我关注的是:

  • 结果集如何在内部处理这些记录?及
  • 程序员如何分批处理这些记录以避免内存问题的发生
  • 等待你的回答。。 非常感谢

    在遍历结果集时,您可以使用它来控制提取到内存中的记录数。但总的来说,我认为这取决于JDBC驱动程序如何处理该设置以及如何在内存中存储获取的记录

    编辑:以下是一个示例(理论上,结果集在内存中只保留1条记录):


    你说的“缺少记录”是指数十万条记录,是吗?在印度以外,并非所有人都理解“lakh”:)我用“lot”代替了“lakh”。顺便说一句,“缺乏”的意思与“lakh”完全相反。见和。回到您的问题ashwani66476,答案取决于使用的确切DB和JDBC驱动程序。请说出他们的名字。谢谢你,彼得,更正。。。。我正在使用DB2(9.5)数据库。谢谢:您能详细说明一下吗。意思是我如何使用它?看看这个例子,它是非常基本的JDBC。确切的编码取决于数据库和使用的JDBC驱动程序。那么,您的代码示例是否不适用于MySQL和PostgreSQL。Ashwani66476必须对环境做更多的阐述。例如,哪个DB和哪个JDBC驱动程序。@BalusC:我同意这取决于驱动程序,这就是为什么我在回答中说:“它取决于JDBC驱动程序如何处理该设置”,但一般来说,大多数驱动程序都遵循良好的设计模式,并尝试遵守fetch size设置,并且不会将整个结果集保留在内存中。请注意,ResultSet.TYPE_FORWARD_ONLY和ResultSet.FETCH_FORWARD非常重要,因为它们只允许从第一条记录到最后一条记录读取一次结果集。对于其他结果集类型,逻辑可能不同。
    Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.FETCH_FORWARD);
    stmt.setFetchSize(1);
    ResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
    while (srs.next()) {
       String name = srs.getString("COF_NAME");
       float price = srs.getFloat("PRICE");
       // Do your processing...
    }