java中数据库中实现分页的sql语句要求每页十条要查询的是第二页

java中数据库中实现分页的sql语句要求每页十条要查询的是第二页,第1张

1、首先preparedstatement是statement的子接口,属于预处理 *** 作,与直接使用statement不同的是,preparedstatement在 *** 作的时候,先在数据表中准备好了一条sql语句,但是sql语句的值暂时不设置,而是之后设置。

2、在使用statement的时候,要执行一条完整的失去了,在执行钱使用connection直接创建的。

3、如何获得preparedstatement,在connection接口中,通过preparedstatement(String sql)得到。

4、最后在日期输入的时候,正常情况都是使用javautildate表示日期,在 preparedStatement中需要使用javasqldate类型,如下图所示就完成了。

Java调用存储过程
CallableStatement proc = null;
proc = connprepareCall("{ call SCOTTTESTA(,) }");
procsetString(1, "100");
procregisterOutParameter(2, TypesVARCHAR);
procexecute();
String testPrint = procgetString(2);
第二个问号是out类型的参数
JAVA实现分页显示多表查询数据?
分页可以使用网络上提供的分页类的做。。
至于多表查询的数据 只是 多张表关联在一起,跟分页没有太大的关系

jsp中分页最快捷的办法是用分页组件:
分页组件代码使用taglib实现的:
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/tld/ctld" prefix="c"%>
<%@ attribute name="curIndex" type="javalangLong" required="true"%>
<%@ attribute name="pageSize" type="javalangLong" required="true"%>
<%@ attribute name="pagerRange" type="javalangLong" required="true"%>
<%@ attribute name="totalPage" type="javalangLong" required="true"%>
<%@ attribute name="formId" type="javalangString" required="true"%>
<%
long begin = Mathmax(1, curIndex - pagerRange/2);
long end = Mathmin(begin + (pagerRange-1),totalPage);

requestsetAttribute("p_begin", begin);
requestsetAttribute("p_end", end);
%>
<table class="pager">
<tr>
<% if (curIndex!=1){%>
<td><a href="javascript:gotoPage(1)">首页</a></td>
<td><a href="javascript:gotoPage(<%=curIndex-1%>)">上一页</a></td>
<%}else{%>
<td class="disabled"><a href="#">首页</a></td>
<td class="disabled"><a href="#">上一页</a></td>
<%}%>

<c:forEach var="i" begin="${p_begin}" end="${p_end}">
<c:choose>
<c:when test="${i == curIndex}">
<td class="active"><a href="#">${i}</a></td>
</c:when>
<c:otherwise>
<td><a href="javascript:gotoPage(${i})">${i}</a></td>
</c:otherwise>
</c:choose>
</c:forEach>

<% if (curIndex!=totalPage){%>
<td><a href="#">下一页</a></td>
<td><a href="#">末页</a></td>
<%}else{%>
<td class="disabled"><a href="javascript:gotoPage(<%=curIndex+1%>)">下一页</a></td>
<td class="disabled"><a href="javascript:gotoPage(<%=totalPage%>)">末页</a></td>
<%}%>
<td><a>共${totalPage}页</a></td>
<td class="input_li">跳转到:<input type="text" id="p_pageIndex" size="2" value="<c:out value="${pageIndex}"/>"/>页 <input type="button" id="gotoBtn" onclick="gotoPageByBtn()" value="GO"/></td>
<td class="input_li"> 每页:
<select id="p_pageSizeSelect" onchange="gotoPage(<%=curIndex%>)">
<option value="10" <c:if test="${pageSize==10}">selected</c:if>>10条</option>
<option value="20" <c:if test="${pageSize==20}">selected</c:if>>20条</option>
<option value="50" <c:if test="${pageSize==50}">selected</c:if>>50条</option>
</select>
</td>
</tr>
</table>
jsp中使用方法:
<%@ taglib uri="/WEB-INF/tld/ctld" prefix="c"%>
<%@ taglib uri="/WEB-INF/tld/fmttld" prefix="fmt"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%>
<head>
<style><!--分页样式-->
pager { font: 12px Arial, Helvetica, sans-serif;}
pager a {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;margin-right:2px;line-height:30px;vertical-align:middle;}
pager active a{color:red;border:none;}
pager a:visited {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;}
pager a:hover {color: #fff; background: #ffa501;border-color:#ffa501;text-decoration: none;}
pager input_li{padding: 1px 6px;}
</style>
<script><!--分页跳转脚本-->
function gotoPage(pageIndex){
var queryForm = documentgetElementById("queryForm");
var action = queryFormaction;
var pageSize = documentgetElementById("p_pageSizeSelect")value;
action += "pageIndex=" + pageIndex + "&pageSize=" + pageSize;
//alert(action);
queryFormaction = action;
queryFormsubmit();
}
function gotoPageByBtn(){
var pageIndex = documentgetElementById("p_pageIndex")value;
var pageIndexInt = parseInt(pageIndex);
var totalPage = ${totalPage};

if(pageIndexInt>0 && pageIndexInt<totalPage){
gotoPage(pageIndex);
}
else{
alert("输入页数超出范围!");
}
}
</script>
</head>
<body>
<form id="queryForm" action="${basePath}/log/list" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName" value="<c:out value="${userName}"/>"/> </td>
<td><input type="submit" text="查询"/></td>
</tr>
</table>
</form>
<tags:pager pagerRange="10" pageSize="${pageSize}" totalPage="${totalPage}" curIndex="${pageIndex}" formId="queryForm"></tags:pager>
<table class="border">
<thead>
<tr>
<th width="100">用户名称</th>
<th width="500"> *** 作内容</th>
<th width="200"> *** 作时间</th>
</tr>
</thead>
<tbody>
<c:forEach items="${logList}" var="log">
<tr>
<td>${loguserName}</td>
<td>${logresult}</td>
<td>
<fmt:formatDate value="${logcreateTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<tags:pager pagerRange="10" pageSize="${pageSize}" totalPage="${totalPage}" curIndex="${pageIndex}" formId="queryForm"></tags:pager>
</body>

分页有真分 假分真分主要是传递参数到后台(比如传A、B sql为:select from table limit A,B 即查询到第A到第B条记录)A、B的值主要根据当前页数、跳转页数、每页记录数查询(逻辑比较简单,LZ自己写吧)假分页是每次都将全部数据查出,再在程序里面做处理,只显示第A到第B条一般来说,真分的效率比假分高很多,特别是查询数据多的时候如果使用ssh框架,则可以直接利用Hibernate中的分页功能

你看下这个网址 >h1>用户信息列表</h1>
<%
//定义四个分页会用到的变量
int pageSize=3;
int pageNow=1;//默认显示第一页
int rowCount=0;//该值从数据库中查询
int pageCount=0;//该值是通过pageSize和rowCount
//接受用户希望显示的页数(pageNow)
String s_pageNow=requestgetParameter("pageNow");
if(s_pageNow!=null){
//接收到了pageNow
pageNow=IntegerparseInt(s_pageNow);
}
//查询得到rowCount
ClassforName("commicrosoftjdbcsqlserverSQLServerDriver");
Connection ct=DriverManagergetConnection("jdbc:microsoft:sqlserver://127001:1433;dataBaseName=System","sa","");
Statement sm=ctcreateStatement();
ResultSet rs=smexeuteQuery("select count() form users ");
if(rsnext()){
rowCount=rsgetInt(1);
}
//计算pageCount
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
//查询出需要显示的记录
rs=smexeuteQuery("select top "+pageSize
+" from users where userId not in(select top "
+pageSize(pageNow-1)+" userId from users) ");
%>
//显示
<table border="1">
<tr><td>用户ID</td><td>用户名字</td><td>密码</td><td>电邮</td><td>级别</td></tr>
<%
while(rsnext()){
%>
<tr><td><%=rsgetInt(1)%></td><td><%=rsgetString(2)%></td>
<td><%=rsgetString(3)%></td><td><%=rsgetString(4)%></td><td><%=rsgetInt(5)%></td></tr>
<%}%>
</table>
<%
//上一页
if(pageNow!=1){
outprintln("<a href=weljsppageNow="+(pageNow-1)+">上一页</a>");
}
//显示超链接
for(int i=1;i<=pageCount;i++){
outprintln("<a href=weljsppageNow="+i+">["+i+"]</a>");
}
//下一页
if(pageNow!=pageCount){
outprintln("<a href=weljsppageNow="+(pageNow+1)+">下一页</a>");
}
%>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13398417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存