我有以下代码:
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())
{
................
................
}
所以请帮助我。
答案 0 :(得分:2)
创建一个Scrollable ResultSet。例如
//创建一个可滚动的结果集
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//将光标移动到第一行之前的开头。 //光标位置为0.
resultSet.beforeFirst();