结果集移动到第一个记录

时间:2013-09-18 07:33:21

标签: java android

我有以下代码:

try
        {
            rsEjamatData=con.getLiveEjamatPass(ejmtid);

            List<Mikats> dbmessages = mdb.getAllMikats();

            for (Mikats c:dbmessages){

            if(rsEjamatData.next())
            {
                if(rsEjamatData.getInt(rsEjamatData.findColumn("AutoID"))!=c.getAutoID())
                {
                    flag=1;
                }
                else
                {
                    flag=2;
                }

            }
            }


            if(flag==0 || flag==1)
            {
                rsEjamatData.last();
                rsEjamatData.beforeFirst();
            }



            //flag=1;

            //if(rsData.next() )
            {
            if(flag==0 || flag==1 || rsEjamatData.getRow()>dbmessages.size())
            {

            while(rsEjamatData.next())
            {
                String eJamatID = rsEjamatData.getString(rsEjamatData.findColumn("eJamatID"));
                String mktid = rsEjamatData.getString(rsEjamatData.findColumn("MikatID"));
                String StartDate = rsEjamatData.getString(rsEjamatData.findColumn("StartDate"));                             
                String EndDate=rsEjamatData.getString(rsEjamatData.findColumn("EndDate"));

                String Block = rsEjamatData.getString(rsEjamatData.findColumn("Block"));
                String Floor = rsEjamatData.getString(rsEjamatData.findColumn("Floor"));
                String gate = rsEjamatData.getString(rsEjamatData.findColumn("gate"));                             
                String masjid=rsEjamatData.getString(rsEjamatData.findColumn("masjid"));

                String AutoID = rsEjamatData.getString(rsEjamatData.findColumn("AutoID"));                             
                String SeatName=rsEjamatData.getString(rsEjamatData.findColumn("SeatName"));

                cnt++;
                mdb.addEjamatPass(new Mikats(Integer.parseInt(eJamatID),Integer.parseInt(mktid), StartDate, EndDate, Block,Floor,gate,masjid, Integer.parseInt( AutoID),SeatName),cnt);


            }
            }
        }
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }

在我的代码中:

for (Mikats c:dbmessages){

            if(rsEjamatData.next())

结果集以forword方向移动。

在这个过程发生之后,我想让我的结果集回到第一个位置。

所以我写道:

if(flag==0 || flag==1)
            {
                rsEjamatData.last();
                rsEjamatData.beforeFirst();
            }

但是当代码进入rsEjamatData.last();时,它会给我以下异常:

java.sql.SQLException: ResultSet may only be accessed in a forward direction.

我也试过直接写rsEjamatData.first(),但给了我同样的错误。

请指导我。

没有第一个位置,它就不会进入

while(rsEjamatData.next())
            {

................
................

}

所以请帮助我。

1 个答案:

答案 0 :(得分:2)

创建一个Scrollable ResultSet。例如

//创建一个可滚动的结果集

Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY);

//将光标移动到第一行之前的开头。     //光标位置为0.

   resultSet.beforeFirst();