想做一个分页的程序。如何让jdbc 每次只返回20条数据? 自己写SQL语句只查20条记录就行了,不涉及java,在数据库上就可以完成 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Statement 的setFetchSize(20)这就是返回数据库记录集20行要几行你就自己设置好了但不要超过你的总行数,否则要异常的。加分吧,你的问题已经解决了 LingFengNB(凌枫) : 能否给个例子,比如如何取下20条数据? 你只问取20条,我就解了。20分的问题,就20分的答案呀。不是说我不讲朋友,回答问题还这样小家子气。问题是你就没有想好呀,把问题问好。你要取得下20条,那肯定要把游标定位了,你可以用rs.absolute(n);来进行定位,n就是你要定位的位子,比如你定位于20条处。rs.absolute(20);这样就直接在20条那里,然后你在一次读取20条。这个20分的问题该结了。想要源码,另开大分贴,这样才有吸引力,那些大仙才来。 安一定顺序从数据库中提取20条,记下第20条的ID,再按顺序提取 >ID 数量为20条,在记录最后的ID依次类推 LingFengNB(凌枫)老兄太腐朽了吧!分能当饭吃! <%@ page contentType="text/html;charset=gb2312" %><%//变量声明java.sql.Connection sqlCon; //数据库连接对象java.sql.Statement sqlStmt; //SQL语句对象java.sql.ResultSet sqlRst; //结果集对象java.lang.String strCon; //数据库连接字符串java.lang.String strSQL; //SQL语句int intPageSize; //一页显示的记录数int intRowCount; //记录总数int intPageCount; //总页数int intPage; //待显示页码java.lang.String strPage;int i;//设置一页显示的记录数intPageSize = 20;//取得待显示页码strPage = request.getParameter("page");if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1;}else{//将字符串转换成整型 intPage = java.lang.Integer.parseInt(strPage); if(intPage<1) intPage = 1;}//装载JDBC驱动程序Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();strCon = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=数据库";sqlCon = java.sql.DriverManager.getConnection(strCon,"sa","密码");//创建一个可以滚动的只读的SQL语句对象sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句strSQL = "select * from customers";//执行SQL语句并获取结果集sqlRst = sqlStmt.executeQuery(strSQL);//获取记录总数sqlRst.last();intRowCount = sqlRst.getRow();//记算总页数intPageCount = (intRowCount+intPageSize-1) / intPageSize;//调整待显示的页码if(intPage>intPageCount) intPage = intPageCount;%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title></head><body><table border="1" cellspacing="0" cellpadding="0"><tr> <th>姓名</th> <th>年龄</th></tr><%if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据 i = 0; while(i<intPageSize && !sqlRst.isAfterLast()){ %><tr> <td><%=sqlRst.getString(1)%></td> <td><%=sqlRst.getString(2)%></td></tr> <% sqlRst.next(); i++; }}%></table>第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="sql.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="sql.jsp?page=<%=intPage-1%>">上一页</a><%}%></body></html><%//关闭结果集sqlRst.close();//关闭SQL语句对象sqlStmt.close();//关闭数据库sqlCon.close();%> 用SQL写在数据库内就可以完成了 笔试题求解!! [求达人]为什么我的JTable不显示单头(就是列名) 有图有真相 一道求质数的题目 关于这个InputStream报错的问题? jacob操作word的问题 正则表达式的爱好者请进! 我是java的初学者,请问<thinking in java>适合我吗 菜鸟提问喽....(JDataStore of JBuilder 4.0) CGI与Java java装饰模式的问题 求《Java图像编程实例库》光盘代码 快来看看这段代码吧,小弟给大家磕头了.为什么不好使?(在线等!!急!!!)
这就是返回数据库记录集20行
要几行你就自己设置好了
但不要超过你的总行数,否则要异常的。
加分吧,你的问题已经解决了
能否给个例子,比如如何取下20条数据?
20分的问题,就20分的答案呀。
不是说我不讲朋友,回答问题还这样小家子气。
问题是你就没有想好呀,把问题问好。
你要取得下20条,那肯定要把游标定位了,
你可以用rs.absolute(n);来进行定位,n就是你要定位的位子,比如你定位于20条处。
rs.absolute(20);这样就直接在20条那里,然后你在一次读取20条。
这个20分的问题该结了。
想要源码,另开大分贴,这样才有吸引力,那些大仙才来。
再按顺序提取 >ID 数量为20条,在记录最后的ID
依次类推
老兄太腐朽了吧!分能当饭吃!
//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;int i;//设置一页显示的记录数
intPageSize = 20;//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}//装载JDBC驱动程序
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();strCon = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=数据库";sqlCon = java.sql.DriverManager.getConnection(strCon,"sa","密码");//创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句
strSQL = "select * from customers";//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title>
</head><body><table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr><%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){
%>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
</tr>
<%
sqlRst.next();
i++;
}
}
%></table>第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="sql.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="sql.jsp?page=<%=intPage-1%>">上一页</a><%}%></body>
</html><%
//关闭结果集
sqlRst.close();//关闭SQL语句对象
sqlStmt.close();//关闭数据库
sqlCon.close();
%>