作者在 2009-12-02 21:24:20 发布以下内容
二次查询,我想先将第一次的查询结果放入到一张表里面,第二次查询的时候就从表里面读出来。如果哪位高手愿意在线帮忙我的,可以加我的QQ号459048778,希望在各位的帮助下能够进步,先谢谢了!
以下是我的问题:
PageQueryJB.java
package my;
import java.sql.*;
import java.util.*;
public class PageQueryJB
{
private Connection con=null;
private Statement st=null;
private ResultSet rs=null;
private ArrayList list=new ArrayList();
int totalPage=0;//总页数
int pageSize=5; //一页中总记录数
int currentPage=0; //当前页号
int totalRecord=0;//总记录数
int firstRecord=0;
public ArrayList pageQuery(String s,int pageNO)
{
try
{
DBConnection db=new DBConnection();
con=db.getConnection();
st=con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
currentPage=pageNO;
String sql=null;
StringTokenizer token=new StringTokenizer(s," ");
while(token.hasMoreTokens())
{
String temp=token.nextToken();
if(sql==null)
{
sql=" title like '%"+temp+"%' ";
}
else
{
sql=sql+" and title like '%"+temp+"%' ";
}
}
sql="select title,type,price into 信息表 from titles where "+sql;
import java.sql.*;
import java.util.*;
public class PageQueryJB
{
private Connection con=null;
private Statement st=null;
private ResultSet rs=null;
private ArrayList list=new ArrayList();
int totalPage=0;//总页数
int pageSize=5; //一页中总记录数
int currentPage=0; //当前页号
int totalRecord=0;//总记录数
int firstRecord=0;
public ArrayList pageQuery(String s,int pageNO)
{
try
{
DBConnection db=new DBConnection();
con=db.getConnection();
st=con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
currentPage=pageNO;
String sql=null;
StringTokenizer token=new StringTokenizer(s," ");
while(token.hasMoreTokens())
{
String temp=token.nextToken();
if(sql==null)
{
sql=" title like '%"+temp+"%' ";
}
else
{
sql=sql+" and title like '%"+temp+"%' ";
}
}
sql="select title,type,price into 信息表 from titles where "+sql;
//这一行没有into 信息表时就可以第一次查询出来,添加了into 信息表就没办法查询出来了,请问是什么原因呢?
rs=st.executeQuery(sql);
if(!rs.last())
{
return list;
}
totalRecord=rs.getRow(); //获得总记录数
if(totalRecord%pageSize == 0)
{
totalPage=totalRecord/pageSize;
}
else
{
totalPage=totalRecord/pageSize+1;
}
if(currentPage>totalPage)
return list;
else
firstRecord=(currentPage-1)*pageSize+1;
rs.absolute(firstRecord-1);
int counter=1;
while( rs.next() && counter<=pageSize)
{
QueryVO vo=new QueryVO();
int n=rs.getRow();
vo.setRecID(String.valueOf(n));
vo.setTitle(rs.getString("title"));
vo.setType(rs.getString("type"));
vo.setPrice(rs.getString("price"));
list.add(vo);
counter++;
}
rs.close();
st.close();
con.close();
}
catch(Exception e)
{
System.out.println("数据库查询出错:"+e);
}
finally
{
rs=null;
st=null;
con=null;
}
return list;
}
////////////////////
public int getTotalPage()
{
return totalPage;
}
public int getPrepage()
{
int prePage=0;
if(currentPage>1)
prePage=currentPage-1;
else
prePage=1;
return prePage;
}
public int getNextPage()
{
int next;
if(currentPage==totalPage)
next=totalPage;
else
next=currentPage+1;
return next;
}
}
rs=st.executeQuery(sql);
if(!rs.last())
{
return list;
}
totalRecord=rs.getRow(); //获得总记录数
if(totalRecord%pageSize == 0)
{
totalPage=totalRecord/pageSize;
}
else
{
totalPage=totalRecord/pageSize+1;
}
if(currentPage>totalPage)
return list;
else
firstRecord=(currentPage-1)*pageSize+1;
rs.absolute(firstRecord-1);
int counter=1;
while( rs.next() && counter<=pageSize)
{
QueryVO vo=new QueryVO();
int n=rs.getRow();
vo.setRecID(String.valueOf(n));
vo.setTitle(rs.getString("title"));
vo.setType(rs.getString("type"));
vo.setPrice(rs.getString("price"));
list.add(vo);
counter++;
}
rs.close();
st.close();
con.close();
}
catch(Exception e)
{
System.out.println("数据库查询出错:"+e);
}
finally
{
rs=null;
st=null;
con=null;
}
return list;
}
////////////////////
public int getTotalPage()
{
return totalPage;
}
public int getPrepage()
{
int prePage=0;
if(currentPage>1)
prePage=currentPage-1;
else
prePage=1;
return prePage;
}
public int getNextPage()
{
int next;
if(currentPage==totalPage)
next=totalPage;
else
next=currentPage+1;
return next;
}
}