迭代DB表行:迭代时的性能

时间:2013-09-18 10:32:51

标签: java performance jackcess

我正在使用JackCess库(http://sourceforge.net/p/jackcess/)在Java下迭代Access数据库的行。 行很多,性能不是很好,目前我用这段代码迭代表的所有行:

private static Table VatUnitsTable;

private void fun()
{
    for (Map<String, Object> EXVAtRow : VatUnitsTable)
    {
       VatUnit vatU = new VatUnit((String)EXVAtRow.get("UUID"));
       vatU.setExtID((Integer) EXVAtRow.get("ID"));
       //bla bla working with vatU object
    }
}

我想知道在使用for(..:..)进行迭代时调用什么方法,并且如果可以在一次调用中获取所有行的arrayList而不迭代每一行并调用SQL方法。

谢谢

1 个答案:

答案 0 :(得分:0)

好的找到一种更快的遍历行的方法,即使我们谈的是毫秒,这似乎也快了4倍。

Cursor cursor = Cursor.createCursor(VatUnitsTable;);
cursor.beforeFirst();
try
{
    while (cursor.moveToNextRow())
    {
       Map<String, Object> EXVAtRow = cursor.getCurrentRow();
       VatUnit vatU = new VatUnit((String)EXVAtRow.get("UUID"));
       vatU.setExtID((Integer) EXVAtRow.get("ID"));
       //bla bla working with vatU object
    }
 }
 catch (IOException ex)
{
    log.error(ex);
}