站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题新手提问,JSP页面调用分页BEAN的问题,列不出数据了!

新手提问,JSP页面调用分页BEAN的问题,列不出数据了!

摘要: 新手提问,JSP页面调用分页BEAN的问题,列不出数据了!


连接数据库sql_data
package news;
import java.sql.*;
public class sql_data
{
String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://192.168.1.7:1433;DatabaseName=qianerp";
String user="sa";
String password="396330100";
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
public sql_data()
{
try
{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("sql_data()" + e.getMessage());
}
}
public void executeInsert(String sql)
{
try
{
conn=DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex)
{
System.err.println("sql_data.executeUpdate:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
try
{
conn=DriverManager.getConnection(url,user,password);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("sql_data.executeQuery:"+ex.getMessage());
}
return rs;
}
public void executeUpdate(String sql)
{
try
{
conn=DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery"+ex.getMessage());
}
}
public void executeDelete(String sql)
{
try
{
conn=DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex)
{
System.err.println("sql_data.executeDelete:"+ex.getMessage());
}
}
public void closestmt()
{
try
{
stmt.close();
}
catch(SQLException e)
{
System.err.println("sql_data.executeDelete:");
e.printStackTrace();
System.err.println("sql_data.executeDelete:");
}
}
public void closeConn()
{
try
{
conn.close();
}
catch(SQLException e)
{
System.err.println("sql_data.executeDelete:");
e.printStackTrace();
}
}
}

分页BEAN
package util;

import java.sql.*;
import news.sql_data;
public class page {
ResultSet CountTopicrs = null; //初始化总记录数Rs变量
ResultSet Pagirs = null; //初始化分页时每页的记录集数Rs变量
public static void main(String[] args) {
}
private int intCountTopic = 0; //主题总数,即select选出的、库中所有记录总数
public int intPageSize; //每页显示主题数,即每页显示的记录总数
public int intPageCount; //总页数
public int intPage = 0; //当前页数
private String Countsql = null,
Pagisql = null,
str = null,
str_where = null;
private String str_parameter = "";
//public static int pages_n=1; //传分页参数值

private String nowPage; //初始化当前页intPage变量,以准确便获取当前页,即获取当前页的具体页号。
private String HttpFile; //当前的地址栏的文件,即具体jsp文件。

sql_data db = new sql_data(); //连接数据库

//接收传分页参数
public void setPages(int n) {
intPageSize = n;
}

public String getPagisql() {
return Pagisql;
}

/*功能:接收参数组织SQL语句
*str_table :分页显示的表名
*str_where:分页的where条件
*httpfile :具体jsp文件
*pages :获取地址栏传过来的pages参数
*/
public ResultSet setQuerysql(
String str_table,
String str_where,
String httpfile,
String pages)
throws SQLException {
ResultSet r = null;
this.nowPage = pages;
this.HttpFile = httpfile; //分页文件名

Countsql = "select count(*) from " + str_table + " " + str_where;
Pagisql =
"select * from "
+ str_table
+ " "
+ str_where
+ " order by id desc";
try {
r = querySql(Countsql, Pagisql);
} catch (SQLException _ex) {
System.out.println(_ex+"12412");
}
return r;
}

/*功能:接收参数进行首尾页判断
*Countsql:总记录的Query字符串。[形式为select count(*) from tablename]
*Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]
*request :参数传递过程中的变量。[用来控制翻页时的pages变量]
*/
public ResultSet querySql(
String Countsql,
String Pagisql) //,HttpServletRequest request
throws SQLException {
//获取当前文件名。
//HttpFile=request.getRequestURI();
//获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]
//nowPage=request.getParameter("pages");//由参数HttpServletRequest request传递而来

if (nowPage == null) {
intPage = 1;
} else {
intPage = Integer.parseInt(nowPage);
if (intPage < 1)
intPage = 1;
} //end else

//获取总记录数的结果集。
CountTopicrs = db.executeQuery(Countsql);
if (CountTopicrs.next()) {
intCountTopic = CountTopicrs.getInt(1); //获取第一个字段的整型
}
//获取总页数。
intPageCount = (intCountTopic + intPageSize - 1) / intPageSize;
//如果当前页大于总页数,则当前页等于总页数。//=最后一页
if (intPage > intPageCount) {
intPage = intPageCount;
}
//关闭总主题数的数据集。
CountTopicrs.close();

//获取执行分页的结果集。
Pagirs = db.executeQuery(Pagisql);
return Pagirs;
} //end querySql function.

//获取记录总数。
public int getCountTopic() {
return intCountTopic;
}

//获取总页数。
public int getPageCount() {
return intPageCount;
}

//获取当前页数。
public int getIntPage() {
return intPage;
}

//获取当前页的数据。boodata为True,表示要加入该数据到当前页。
//这里可能会在JSP调用时影响速度[因为调用时要多一层循环],因此放到JSP中嵌入,待改进。
//该代码暂时保留。
// public boolean getData(){
// boolean boodata=false;
// if (intPageCount>0)
// {
// try
// {
// while (Pagirs.next())
// {
// i++;
/// if (i>((intPage-1)*intPageSize) &&(i<=intPage*intPageSize))
// {
// boodata=true;
// }
// } //endwhile.
// }//end try.
// catch(Exception e){
// System.out.println(e.toString());
// }
// } //endif.
// return boodata;
// } //end getData();

//设置分页参数
public void setPfoot(String str) {
this.str_parameter += str;
}

//分页栏函数。
public String PageFooter() {
String str = "<form action=" + HttpFile + " name=form1 methord=post>";
int next, prev;
prev = intPage - 1;
next = intPage + 1;
str += "总计"
+ getCountTopic()
+ "
条记录,"
+ "【共"
+ getPageCount()
+ "
页】";
str += "【条"
+ intPageSize
+ "/页】 当前第"
+ getIntPage()
+ "
页(列出第"
+ ((intPageSize * getIntPage() + 1) - intPageSize)
+ "到第"
+ (getIntPage() * intPageSize)
+ "条) &nbsp; &nbsp; ";
//getIntPage()*intPageSize
if (intPage > 1)
str += " + HttpFile
+ "?pages=1"
+ str_parameter
+ ">第一页 ";
else
str += " 第一页 ";

if (intPage > 1)
str += " + HttpFile
+ "?pages="
+ prev
+ str_parameter
+ ">上一页 ";
else
str += " 上一页 ";

if (intPage < intPageCount)
str += " + HttpFile
+ "?pages="
+ next
+ str_parameter
+ ">下一页 ";
else
str += " 下一页 ";

if (intPageCount > 1 && intPage != intPageCount)
str += " + HttpFile
+ "?pages="
+ intPageCount
+ str_parameter
+ ">最后页";
else
str += " 最后页
";
str
+= " 转到<input TYPE='text'NAME='pages' size='2'>页 <input type='submit' name='Submit' value='go'></form>";
return str;
}
//关闭数据库连接
public void closeconn() {
//db.closestmt();
//db.closeConn();
}

} //end.




JSP页面

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.sql.*"%>
<%@ page language="java" import="java.util.*"%>
<%@ page language="java" import="java.text.*"%>




<body>



<%ResultSet RS_temp=null;

RS_temp = sqlbean.executeQuery("select a21,a1,a2,a8,a9,a13 from gb where a25=0");
while(RS_temp.next()){%>

<option value="<%=RS_temp.getString("class")%>" selected><%=RS_temp.getString("class")%></option>
<%}
//RS_temp.close();%>
<input type="reset" name="Submit" value="重置">


<input name="Submit" type="submit" onClick="alert(&quot;不好意思,网站建设中&quot;)" value="提交11">


<table width="1015" border="1">
<tr>
<td width="62">
分类码
</td>
<td width="67">
拼音码
</td>
<td width="263">
商品名称
</td>
<td width="247">
生产企业
</td>
<td width="122">
规格
</td>
<td width="63">
库存
</td>
<td width="72">
确定购买
</td>
<td width="67">
购买数量
</td>
</tr>
<% String nowPage="";
String str_where="";//设置查询条件,默认值为空
String footer="";
String a21="",a1="",a2="",author="",a8="",a9="",a13="";

nowPage=request.getParameter("pages"); //获取地址栏传过来的pages参数
if (nowPage==null||nowPage.equals("null"))
nowPage="0"; //将当前页的具体页号置为0
pagi.setPages(15); //设置分页的每页条数
ResultSet rs =null;
rs= pagi.setQuerysql("gb",str_where,"sql_test.jsp",nowPage);
footer = pagi.PageFooter(); //读分页栏
try{
if (pagi.intPageCount>0)
{int i=0;
while (rs.next())
{i++;
if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))
{
a21=rs.getString("a21")+"";
a1=rs.getString("a1")+"";
a2=rs.getString("a2")+"";
a8=rs.getString("a8")+"";
a9=rs.getString("a9")+"";
a13=rs.getString("a13")+"";
%>
<tr><td height="22" class="forumrow"><%=a21%></td>
<td height="22" class="forumrow"><%=a1%></td>
<td height="22" class="forumrow"><%=a2%></td>
<td height="22" class="forumrow"><%=a8%></td>
<td height="22" class="forumrow"><%=a9%></td>
<td height="22" class="forumrow"><%=a13%></td>
</tr>
<%}
}
}
rs.close();}
catch(Exception e)
{out.println(e.getMessage());}
finally
{pagi.closeconn();}
out.print("</table>");
out.println("<table border=0 width='70%' cellspacing='0' cellpadding='0' align='center' bordercolorlight='#000000' bordercolordark='#FFFFFF'><tr><td colspan=4 align=center>"+footer+"</td></tr>");
%>
</table>
<%//sd.closestmt();
//sd.closeConn();
%>
</body>

运行后的提示:

[Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.

我不知道是哪里出了问题,希望能得到帮助!


Object has been closed 从这句来看,应该是某个地方的connection 被关闭?
试试把有close的地方注释掉看看

另外,出错信息只有一行吗


你的代码太差了,混到一起去,都不想看,建议上网找一些分页代码先学学再写。


finally {pagi.closeconn();} 你写的代码就像女孩子,正确的也杀,异常也杀,能不Object has been closed 吗?


代码乱!
写核心了!
分页机制有很多的


楼主不要气馁 呵呵
会成为高手的 加油


minno(Java族人) ( ) 信誉:98 Blog 2006-9-5 20:08:37 得分: 0



finally {pagi.closeconn();} 你写的代码就像女孩子,正确的也杀,异常也杀,能不Object has been closed 吗?


能说的具体点吗??我是初学!


自己顶上去,救命啊!


你在执行数据库操作后就关闭了,但是你又调用方法再次关闭。


↑返回目录
前一篇: 请高人指教关于session和cookie的问题
后一篇: 搭建spring+hibernate框架是什么样流程,大家给些建议,来者有分