select top 2 * from jbsj where bljg is not null and id not in (select top 2 id from jbsj order by jbks)
比如这个,有什么不对,以及如何确定上下页,我是菜鸟,谢谢
比如这个,有什么不对,以及如何确定上下页,我是菜鸟,谢谢
解决方案 »
- 誰有flex builder3 eclipse插件,急求~~~~~
- 请问JSP可以调用Linux程序吗?
- javascript怎么生成xml 急啊
- 在jsp页面中实现按钮点击打开和保存本地文本文件
- MyFacesExtensionsFilter javascript中文乱码
- JSP调用OCX传指针参数问题
- 浅谈当前流行的开发架构
- 数据库连接方式的疑问???
- servlet抛出ClassCastException,请大家指点~~~~~
- 嗷嗷菜!嗷嗷急????
- DWR的Web.xml和Dwr.xml的配置写在Tomact中还是写在Eclipse中?
- ======没分了,请帮忙呀!能让Weblogic8.1支持JDK1.5吗?=========
top 2*4是显示第4页纪录
表名和字段名改一下就可以了,别的都比较通用,不过你要写一个分页类
给你个例子看看,是个简易的。下面的是和数据库交互的java类
public PageBean FindMessageByPage(int currpage,String userid) throws DaoException
{
//下面的“10”表示你一页的信息条数,currpage是指当前页数。
String query = "select top "+currpage*10+" * from NXTV_chat where Chat_userid=? order by Chat_id ";
String queryNum = "select count(Chat_id) from NXTV_chat ";
PageBean pagebean = new PageBean();
int InfoNum = 0;
List MsgList = new ArrayList();
try
{
PreparedStatement stm = conn.prepareStatement(query);
stm.setString(1, userid);
ResultSet rs = stm.executeQuery();
int i = 1;
while (rs.next())
{
if(i>(currpage-1)*10)
{
MessageBean msg = new MessageBean();
msg.setChat_id(rs.getInt("Chat_id"));
msg.setChat_info(rs.getString("Chat_info"));
msg.setChat_addr(rs.getString("Chat_ip"));
MsgList.add(msg);
}
i++;
}
stm = conn.prepareStatement(queryNum);
rs = stm.executeQuery();
while (rs.next())
{
InfoNum = rs.getInt(1);
}
rs.close();
stm.close();
}
catch (SQLException se)
{
se.printStackTrace();
throw new DaoException("查询人物信息时出错,请联系系统管理员。");
}
pagebean.setUserList(MsgList);// 信息列表
pagebean.setCurrPage(currpage);// 当前页数
pagebean.setInfoNum(InfoNum);// 信息总数
pagebean.setPageNum((InfoNum + 9) / 10);// 页面总数
return pagebean;
}
public class PageBean implements Serializable
{
/**
* 总页数
*/
private int PageNum;
/**
* 当前页
*/
private int CurrPage;
/**
* 信息总数
*/
private int InfoNum;
/**
* 信息列表
*/
private List UserList;
public int getCurrPage() {
return CurrPage;
}
public void setCurrPage(int currPage) {
CurrPage = currPage;
}
public int getInfoNum() {
return InfoNum;
}
public void setInfoNum(int infoNum) {
InfoNum = infoNum;
}
public int getPageNum() {
return PageNum;
}
public void setPageNum(int pageNum) {
PageNum = pageNum;
}
public List getUserList() {
return UserList;
}
public void setUserList(List userList) {
UserList = userList;
}
}
//得到总页数
iPageCount = ( ( thisRowCount % iRowCount ) == 0 ? thisRowCount / iRowCount :
( thisRowCount / iRowCount ) + 1 );
//////////////////////////////
if ( iPageCount == 0 ){////// 不会出现,
}/////////////////////////// if ( iPageNow > iPageCount ) {
iPageNow = iPageCount;
}
else if ( iPageNow <= 0 ) {
iPageNow = 1;
}
//光标定位
rst.absolute( ( iPageNow - 1 ) * iRowCount + 1); 在bean 里做 这个方法也不错啊
?
select top 2 * from jbsj where bljg is not null and id not in (select top 2*4 id from jbsj order by jbks)top 2 *是每页2条纪录
top 2*4是显示第4页纪录
小菜同学可以留个QQ吗?我用你的方法要出错啊
(select top 20 列名1 from 表名1 order by 列名 asc )a
where a.列名 not in
(select top 10 列名2 from 表名1 order by 列名 asc)//不知道你看不看得懂 ,注意排序一定不要忘记
//20和10是我随便举的例子,就是你每页要显示的条数
//列名1就是你要显示的列名
//列名2一定只能有一 列而且就等于a.列名还要废话一句:
请不要在论坛里发广告!
2、根据条数和每页显示的记录数有多少页
3、然后根据当前选择的页数计算记录起始显示位置和结束位置
4、把查询的数据显示到页面
这大概就是这个样子,起始分页很简单了,只要把他的思路搞清楚。。
然后就是细节的问题了,比如
1、是否有上一页、下一页
2、每页显示的记录条数是设置死的,还是通过参数去配置的
3、是否橡Google的分页一样加上一个数字导航
等等,,你先把简单的写出来,然后再去完善
* 返回一页数据
*
* @param table:表名
* @param returnFields:返回的字段,字段可以是多个,用“,”隔开
* @param keyField:索引字段,比如ID
* @param sWhere:条件
* @param countOfPage:每页显示记录条数
* @param pageOfGroup:每一组有多少页(为了返回总的组数,翻页函数需要用到)
* @param pageNum:取第几页的数据
* @return vect[vect.size()-3]:
* 总行数;vect[vect.size-2]:总页数;vect[vect.size-1]:总组数;vect[3]..vect[end]:Hashtable
* Hashtable.get(0):字段名称;Hashtable.get(1):值
*/
public Vector getOnePageDate(String table, String returnFields,
String keyField, String sWhere, String orderby, int countOfPage,
int pageNum, int pageOfGroup) {
int iRows = this.getCount(table, sWhere);
int iPages = iRows / countOfPage;
if (iRows % countOfPage > 0 || iPages == 0) {
iPages++;
}
int iGroups = iPages / pageOfGroup;
if (iGroups == 0 || iPages % pageOfGroup != 0) {
iGroups++;
}
if (pageNum < 1)
pageNum = 1;
int beginRow = (pageNum - 1) * countOfPage;
String strSQL = "select top " + countOfPage + " " + returnFields
+ " from " + table;
strSQL = strSQL + " where " + keyField + " not in(" + "select top "
+ beginRow + " " + keyField + " from " + table;
if (!sWhere.equals("")) {
strSQL = strSQL + " where " + sWhere;
}
if (!orderby.equals("")) {
strSQL = strSQL + " order by " + orderby;
}
strSQL = strSQL + ")";
if (!sWhere.equals("")) {
strSQL = strSQL + " and " + sWhere;
}
if (!orderby.equals("")) {
strSQL = strSQL + " order by " + orderby;
}
Vector vect = null;
vect = getData(strSQL);
vect.add("" + iRows);
vect.add("" + iPages);
vect.add("" + iGroups);
return vect;
}/////////
/** 获得翻页Html */
public String turnPageHtml(int rows, int curPageNum,
int iPageOfGroup, String curUrl, int pages, int groups) {
int iCurGroupNum = (curPageNum / iPageOfGroup);
if (curPageNum % iPageOfGroup != 0) {
iCurGroupNum++;
}
String sPreStr = "<a href='" + curUrl + "page="
+ ((iCurGroupNum - 2) * iPageOfGroup + 1) + "'>上"
+ iPageOfGroup + "页</a>";
String sNextStr = "<a href='" + curUrl + "page="
+ ((iCurGroupNum) * iPageOfGroup + 1) + "'>下" + iPageOfGroup
+ "页</a>";
if (iCurGroupNum == 1) {
sPreStr = "";
}
if (iCurGroupNum >= groups) {
sNextStr = "";
}
StringBuffer sTBuf = new StringBuffer();
sTBuf.append("<table align='center' cellpadding='2' cellspacing='1'>");
sTBuf.append("<tr>");
sTBuf.append("<td>共有记录" + rows + "条/" + pages + "页</td>");
sTBuf.append("<td>" + sPreStr + "</td>");
// 当前组页码开始
int iNum = (iCurGroupNum - 1) * iPageOfGroup;
// 当前页码
int pageNum = 0;
for (int i = 1; i <= iPageOfGroup; i++) {
pageNum = iNum + i;
if (pageNum > pages)
break;
if (pageNum == curPageNum) {
sTBuf.append("<td>[" + pageNum + "]</td>");
} else {
sTBuf.append("<td><a href='" + curUrl + "page=" + pageNum
+ "'>" + pageNum);
}
sTBuf.append("</td>");
}
sTBuf.append("<td>" + sNextStr + "</td>");
sTBuf.append("</table>");
return sTBuf.toString();
}
二、如果想要自己写的话也很简单,给你个简单的,如果不算显示部分 也就几行就搞顶^0^
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*,java.sql.*"%>
<jsp:useBean id="aa" scope="page" class="com.jsp.connDB"/>
<html>
<body>
<%
ResultSet rs=aa.executeQuery("select * from user_info");
if(!rs.next())
{
out.println("无记录!");
}
else{
String str=(String)request.getParameter("Page");
if(str==null)
{
str="0";
}
int pagesize=3;
rs.last();
int RecordCount=rs.getRow();
int maxPage=0;
maxPage=(RecordCount%pagesize==0)?(RecordCount/pagesize):(RecordCount/pagesize+1); int Page=Integer.parseInt(str);
if(Page<1)
{
Page=1;
}
else
{
if(((Page-1)*pagesize+1)>RecordCount)
{
Page=maxPage;
}
}
rs.absolute((Page-1)*pagesize+1);
%>
<center>
<table border="1">
<tr>
<td>ID</td>
<td>姓名</td>
<td>年龄</td>
</tr>
<%
for(int i=1;i<=pagesize;i++)
{
%>
<tr>
<td><%=rs.getInt("ID")%></td>
<td><%=rs.getString("name")%></td>
<td><%=rs.getInt("age")%></td>
</tr>
<%
try
{
if(!rs.next())
{
break;
}
}
catch(Exception e)
{
}
}
%> <tr>
<td><%out.println("<br>"+"总行数为:"+RecordCount);%></td>
<td><%out.println("<br>"+"当前页数为:"+Page);%>
<td><%out.println("<br>"+"总页数为:"+maxPage);%>
</tr>
</table>
<table >
<tr>
<td height=100></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">当前页数:[<%=Page%>/<%=maxPage%>]
<%if(Page>1){%>
<a href="index.jsp?Page=1">首页</a> <a href="index.jsp?Page=<%=Page-1%>">上一页</a>
<%
}
if(Page<maxPage)
{
%>
<a href="index.jsp?Page=<%=Page+1%>">下一页</a> <a href="index.jsp?Page=<%=maxPage%>">尾页 </a>
<%}%>
</td>
</tr>
</table>
</center>
<%}%>
</body>
</html>