jsp 的最基本的分页面问题.帮帮忙

chianti_2019 2004-08-30 05:14:26
我的分页如下,我是用sqlserver 数据库.我也是从网络上看到的,改的结果怎么都不可以!!
我是初学者,大侠多多帮忙小第啊!
<table width="42%" height="24" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666">

<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://192.168.18.121:1433;DatabaseName=web_jsp";
String user="sa";
String password="xishui";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from tb_user";
ResultSet pagers=stmt.executeQuery(sql);
int allcol=0;
int ipage=2;
int allpage;
int cpage=1;
int spage;
int pages;

while (pagers.next())
{
allcol++;
}
allpage=(int)Math.ceil((allcol + ipage-1)/ ipage);

if (request.getParameter("pages")==null) {
pages=1;
} else {
pages = new Integer(request.getParameter("pages")).intValue();
}

//判断当前页
if(pages > allpage) // pages == 0)
{
cpage = 1;
} else {
cpage = pages;
}

//判断起始页
spage=(cpage-1)*ipage;

//spage=spage.getBytes("ISO88591"),"GB2312");

String sqlstr="select id ,name from tb_user order by id desc limit "+ spage +","+ ipage;

ResultSet rs=stmt.executeQuery(sqlstr);

int cu=1;
String Color;
int j=0;
while (rs.next()&j<ipage)
{
if (cu % 2 == 0) { Color="#DBECFD"; }
else { Color="#C6E1FD"; }

String name=rs.getString("name");
%>
<tr bgcolor="<%=Color%>">
<td width="62" height="22" >姓名:</td>
<td width="350" align="center"><%= name %></td>
</tr>
<%
j++;
cu++;
}
%>
<tr bgcolor="#CCCCCC">
<td colspan="5" align="right" valign="middle">
共 <%=allcol%>条记录 共 <%=allpage %>页
<% if (cpage>1)
{
%>
<a href="fy.jsp?pages=<%= cpage-1 %>">[上一页]</a>
<%
}
if (cpage<allpage)
{ %>
<a href="fy.jsp?pages=<%= cpage+1 %>">[下一页]</a>
<%
}
%> /
<% for (int i=1;i<=allpage;i++)
{
%>
<a href="fy.jsp?pages=<%=i %>"><%=i %></a>
<%
}
%>
</td>
</tr>
</table>
问题出错是这样的
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]? 1 ?: 'limit' ????????
但是网页上就是这样写的,我都不知道怎么办?我知道就是limit 的问题
但是我不怎么写我不知道该用什么方法写了。大家帮帮我吧,
有代码给我看看也可以,只要是我看的懂,初学者。。
我都郁闷了两天了,分页还没搞定!!!
...全文
106 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qyzj_wanghx 2004-09-01
你们这种分页方式好象都是先取出所有的记录然后分页....可以试着只提每页要显示的数据出来就行了.
回复
xiaowenand 2004-09-01
下面是我的分SQL2000分页代码,里面有两种分页格式.


<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.sql.*"%>
<%
int pagesize=3;//每页显示记录数
int recordcount=0;//记录总数
int pagecount=0;//总页数
int pageid=1;//待显页码
Connection conn=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:jorwoobook","sa","sa");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//String name=request.getParameter("name");
//String pwd=request.getParameter("pwd");
//String sql="select * from system where adminname like '%"+name+"%' and name like '%"+pwd+"%' order by user_id desc";
String sql="select * from system";
ResultSet rs=stmt.executeQuery(sql);

rs.last();
recordcount=rs.getRow();
pagecount=(recordcount%pagesize==0?(recordcount/pagesize):(recordcount/pagesize)+1);
int count=1;
String strpage=request.getParameter("pageid");
if(strpage==null) pageid=1;
else pageid=java.lang.Integer.parseInt(strpage);
if(pageid>recordcount) pageid=recordcount;
if(recordcount>0){
rs.absolute((pageid-1)*pagesize+1);}
int i=0;
while(rs.next()&&count<=pagesize){
count++;
i++;
out.print(rs.getString("adminname"));
out.print("||");
out.print(rs.getString("title"));
out.print("<br>");

}
out.print("共");
out.print(pagecount);
out.print("页");

out.print("共");
out.print(recordcount);
out.print("条");
out.print("<br>");
if(pageid<pagecount){
out.print("<a href=sql.jsp?pageid=");
out.print(pageid+1);
out.print(">下一页</a>");}
if(pageid>1){
out.print("<a href=sql.jsp?pageid=");
out.print(pageid-1);
out.print(">上一页</a>");}
out.print("<br>");
for(int j=1;j<=pagecount;j++){
out.print("<a href=sql.jsp?pageid=");
out.print(j);
out.print(">");
out.print(j);
out.print("</a>");}
stmt.close();
conn.close();
}
catch(ClassNotFoundException e){
out.println(e.getMessage());
}
catch(SQLException e) {
out.println(e.getMessage());
}
finally{
try{
if(conn != null)
conn.close();
}
catch(Exception e){}
}
%>
回复
langjianjun 2004-09-01
用JDBC2.0可以做的。
回复
langjianjun 2004-08-30
楼主的代码是MYSQL代码的,

在MSSQL中不能用limit的,改一下吧,

MSSQL 中应该这样改,所limit改成top试一下,这点请对MSSQL熟的朋友,帮一下忙吧, (不一定准呀,因为我一直用MYSQL,MSQL三年没有用了。呵呵)

还有就是这种分页方式是好用的,网上的例子,都是这个,:)

祝你好运!!!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告