java - 结果集移动到第一个记录

标签 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())

结果集向前移动。

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

所以我写了:

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())
            {

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

}

所以请帮助我。

最佳答案

创建一个可滚动的结果集。例如。

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

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

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

   resultSet.beforeFirst();

关于java - 结果集移动到第一个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18866307/

相关文章:

java - 将静态上下文中已弃用的 Java Date 替换为 Calendar.set 或 GregorianCalendar.set

java - 我有这段代码,但是当我运行它时出现异常

java - 找不到方法错误

java - 我应该把 Java 程序的资源放在哪里?

java - 我无法让 JTable 显示任何内容

Android - 蓝牙发现未找到任何设备

java - 如何向这些 JFrame 添加图片?

java - 带有 EditText 字符串的 SharedPreference

java - 保存对话框输入

android - getIntent().getStringExtra() 最终返回 null