<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*"%>
<%! int n=0;//总记录数
int pagesize=5;//每页显示记录数
int pagecount;//总页数
int curentpage;//当前页
String strpage;//获取参数
Connection con;
Statement st;
ResultSet rs;
ResultSet rs2;
%>
<%//获取当前页面
strpage = request.getParameter("page");
if(strpage==null){
curentpage = 1;
}
else{
curentpage = Integer.parseInt(strpage);
if(curentpage<1) curentpage=1;
}
%>
<%//使用数据库做留言板
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception e)
{
out.print(e);
}
%>
<html >
<head>
<title>0602班级留言板</title>
<script language ="javascript">
function del()
{
if(confirm("确定删除?")))
{
location.href="index.jsp";
}
}
</script>
</head>
<body>
<div class="container">
<%@ include file= "top.jsp" %>
<div id="content">
<%
try{//链接数据库并且读出数据
con = DriverManager.getConnection("jdbc:odbc:student","","");
st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //获取总记录数
rs = st.executeQuery("select count(messageid) from message");
rs.next();
n = rs.getInt(1);String range = String.valueOf(pagesize*(curentpage-1));
String sql;
if(curentpage==1){
sql="select top "+pagesize+" * from user,message where user.userid=message.userid order by messageid desc";
}
else
{
sql="select top "+pagesize+" * from user,message where messageid not in(select top "+range+" messageid from user,message order by messageid desc) order by messageid desc";
}
rs = st.executeQuery(sql);
pagecount = (n%pagesize)==0?(n/pagesize):(n/pagesize+1);//计算页数
if(pagecount>0){
String checkManager = (String)session.getAttribute("username");
if(checkManager.equals("aidscooler"))
{//是管理员session设置为true
session.setAttribute("isWebmaster","true");
}
else{//不是则session设置为false
session.setAttribute("isWebmaster","false");
}
String isWebmaster = (String)session.getAttribute("isWebmaster");
//是管理员设置删除选项
if(isWebmaster.equals("true"))
{
%>
<table border="1">
<%
while(rs.next())
{
%><tr>
<%int id=rs.getInt("messageid");%>
<td ><div class="message"><font style="font-size:18px">
<%=rs.getInt("messageid")%>楼.作者:<%=rs.getString("username")%></font></div></td>
<td><div class="message"><font style="font-size:18px">
<a href="delete.jsp?id=<%=id%>" onclick="del()">删除</a></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
标题:<%=rs.getString("title")%></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
内容:<%=rs.getString("comment")%></font></div></td>
</tr>
<%
}
}
else{//不是管理员,进行普通显示
%>
<table border="1">
<%
while(rs.next())
{
%><tr>
<td width="960"><div class="message"><font style="font-size:18px">
<%=rs.getInt("messageid")%>楼.作者:<%=rs.getString("username")%></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
标题:<%=rs.getString("title")%></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
内容:<%=rs.getString("comment")%></font></div></td>
</tr>
<%
}
}
rs.close();
st.close();
con.close();
}
}
catch(Exception e)
{
out.print(e);
}
%>
</table>
<form action="index.jsp" method = "post">
第<%=curentpage%>页 共<%=pagecount%>页
<%if(curentpage>1){%>
<a href="index.jsp?page=<%=curentpage-1%>">上一页</a>
<%}%> <%if(curentpage<pagecount){%>
<a href="index.jsp?page=<%=curentpage+1%>">下一页</a>
<%}%>
</form>
</div>
<%@ include file = "bottom.jsp" %>
</div>
</body>
</html>
编译能通过,不过在页面会显示:java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
而且,分页后第一页能正常显示,第二页全是第一页中的第2条记录,不知道为什么,请高手帮忙看看,谢谢了
<%@ page import="java.sql.*"%>
<%! int n=0;//总记录数
int pagesize=5;//每页显示记录数
int pagecount;//总页数
int curentpage;//当前页
String strpage;//获取参数
Connection con;
Statement st;
ResultSet rs;
ResultSet rs2;
%>
<%//获取当前页面
strpage = request.getParameter("page");
if(strpage==null){
curentpage = 1;
}
else{
curentpage = Integer.parseInt(strpage);
if(curentpage<1) curentpage=1;
}
%>
<%//使用数据库做留言板
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception e)
{
out.print(e);
}
%>
<html >
<head>
<title>0602班级留言板</title>
<script language ="javascript">
function del()
{
if(confirm("确定删除?")))
{
location.href="index.jsp";
}
}
</script>
</head>
<body>
<div class="container">
<%@ include file= "top.jsp" %>
<div id="content">
<%
try{//链接数据库并且读出数据
con = DriverManager.getConnection("jdbc:odbc:student","","");
st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //获取总记录数
rs = st.executeQuery("select count(messageid) from message");
rs.next();
n = rs.getInt(1);String range = String.valueOf(pagesize*(curentpage-1));
String sql;
if(curentpage==1){
sql="select top "+pagesize+" * from user,message where user.userid=message.userid order by messageid desc";
}
else
{
sql="select top "+pagesize+" * from user,message where messageid not in(select top "+range+" messageid from user,message order by messageid desc) order by messageid desc";
}
rs = st.executeQuery(sql);
pagecount = (n%pagesize)==0?(n/pagesize):(n/pagesize+1);//计算页数
if(pagecount>0){
String checkManager = (String)session.getAttribute("username");
if(checkManager.equals("aidscooler"))
{//是管理员session设置为true
session.setAttribute("isWebmaster","true");
}
else{//不是则session设置为false
session.setAttribute("isWebmaster","false");
}
String isWebmaster = (String)session.getAttribute("isWebmaster");
//是管理员设置删除选项
if(isWebmaster.equals("true"))
{
%>
<table border="1">
<%
while(rs.next())
{
%><tr>
<%int id=rs.getInt("messageid");%>
<td ><div class="message"><font style="font-size:18px">
<%=rs.getInt("messageid")%>楼.作者:<%=rs.getString("username")%></font></div></td>
<td><div class="message"><font style="font-size:18px">
<a href="delete.jsp?id=<%=id%>" onclick="del()">删除</a></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
标题:<%=rs.getString("title")%></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
内容:<%=rs.getString("comment")%></font></div></td>
</tr>
<%
}
}
else{//不是管理员,进行普通显示
%>
<table border="1">
<%
while(rs.next())
{
%><tr>
<td width="960"><div class="message"><font style="font-size:18px">
<%=rs.getInt("messageid")%>楼.作者:<%=rs.getString("username")%></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
标题:<%=rs.getString("title")%></font></div></td>
</tr>
<tr>
<td><div class="message"><font style="font-size:18px">
内容:<%=rs.getString("comment")%></font></div></td>
</tr>
<%
}
}
rs.close();
st.close();
con.close();
}
}
catch(Exception e)
{
out.print(e);
}
%>
</table>
<form action="index.jsp" method = "post">
第<%=curentpage%>页 共<%=pagecount%>页
<%if(curentpage>1){%>
<a href="index.jsp?page=<%=curentpage-1%>">上一页</a>
<%}%> <%if(curentpage<pagecount){%>
<a href="index.jsp?page=<%=curentpage+1%>">下一页</a>
<%}%>
</form>
</div>
<%@ include file = "bottom.jsp" %>
</div>
</body>
</html>
编译能通过,不过在页面会显示:java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
而且,分页后第一页能正常显示,第二页全是第一页中的第2条记录,不知道为什么,请高手帮忙看看,谢谢了
解决方案 »
- 关于apache分布式集群部署的断点续传怎么实现的?
- Tomcat zip 与exe版的问题
- 运行时发现异常:Java.lang.IllegalArgumentException
- JSP怎样连接数据库啊?
- 【求助】程序报错,帮忙分析一下
- 面试题目:使用jsp代码和使用javascript代码 进行表单数据验证有什么不同?
- 关于 while(rs.next()){问题!!!!!!
- 【VB.NET】写的JAVA编译与反编译工具,求测试,求吐槽
- 我对jsp/servlet开发的一些疑问
- 一个response.sendRedirect莫名其妙的问题--详情请进?
- java applet
- javascript问题,请教!!!
看出不同了吗?
如果能够连接上的话 就是sql语句出问题了
在把sql语句在数据库中运行一下 看可以吗
rs = st.executeQuery("select count(messageid) from message");
rs.next();
n = rs.getInt(1);
加上以下代码:
if(rs!=null){
rs.close();
rs=null;
}
而且,分页后第一页能正常显示,第二页全是第一页中的第2条记录,不知道为什么
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
是rs,st的问题
那么在第一个查询后st也关闭下呢?
if(st!=null){
st.close();
st=null;
}
第二次查询开始前
st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 问题二显示纪录的问题应该是SQL文写的有问题
使用嵌套查询
sql="select top "+pagesize+" * from user,message where messageid not in(select top "+range+" messageid from user,message order by messageid desc) order by messageid desc";
⇒
sql="select top "+pagesize+" * from (select * from user,message where messageid not in(select top "+range+" messageid from user,message order by messageid desc)) order by messageid desc";
sql="select top "+pagesize+" * from user,message where messageid not in(select top "+range+" messageid from user,message where user.userid=message.userid order by messageid desc) and user.userid=message.userid order by messageid desc";
创建st时,不带参数呢?
st = con.createStatement();
rs.close();
rs=null;
} if(st!=null){
st.close();
st=null;
} 不行的话st创建的时候不带参数
st = con.createStatement();