当前位置:编程学习 > JAVA >>

关于连接数据并分页显示数据库内容的问题

package database;

import java.sql.*;
import com.sun.rowset.*;

public class fenye {
int pageSize = 5; // 每页显示的记录数
int pageAllCount = 0; // 分页后的总页数
int showPage = 1; // 当前显示页
StringBuffer presentPageResult; // 显示当前页内容
CachedRowSetImpl rowSet; // 用于存储ResultSet对象
String databaseName = ""; // 数据库名称
String tableName = ""; // 表的名字
String user = ""; // 用户
String password = ""; // 密码
String 字段[] = new String[100];
int 字段个数 = 0;

public fenye() {
presentPageResult = new StringBuffer();

}

public void setPageSize(int size) {
try {
Class.forName("sun.jdbc.odbc.jdbcOdbcDriver");

} catch (ClassNotFoundException e) {
}

pageSize = size;
字段个数 = 0;
String uri = "jdbc:odbc:hbb";
try {
Connection con = DriverManager.getConnection(uri, "sa", "sa");
DatabaseMetaData metadata = con.getMetaData();
ResultSet rs1 = metadata.getColumns(null, null, tableName, null);
int k = 0;
while (rs1.next()) {
字段个数++;
字段[k] = rs1.getString(4); // 获取字段的名字
k++;
}
Statement sql = con
.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = sql.executeQuery("SELECT * FROM " + tableName);
rowSet = new CachedRowSetImpl(); // 创建行集对象
rowSet.populate(rs);
con.close(); // 关闭连接
rowSet.last();
int m = rowSet.getRow(); // 总行数
int n = pageSize;
pageAllCount = ((m % n) == 0) ? (m / n) : (m / n + 1);
} catch (Exception exp) {
}
}

public int getPageSize() {
return pageSize;
}

public int getPageAllCount() {
return pageAllCount;
}

public void setShowPage(int n) {
showPage = n;
}

public int getShowPage() {
return showPage;
}

public StringBuffer getPresentPageResult() {
if (showPage > pageAllCount) {
showPage = 1;
}
if (showPage <= 0) {
showPage = pageAllCount;
presentPageResult = show(showPage);
}

return presentPageResult;
}

public StringBuffer show(int page) {
StringBuffer str = new StringBuffer();
str.append("<table border=1>");
str.append("<tr>");
for (int i = 0; i < 字段个数; i++) {
str.append("<th>" + 字段[i] + "</th>");
}
str.append("</tr>");
try {
rowSet.absolute((page - 1) * pageSize + 1);
for (int i = 1; i <= pageSize; i++) {
str.append("<tr>");
for (int k = 1; k <= 字段个数; k++) {
str.append("<td>" + rowSet.getString(k) + "</td>");
}
str.append("</tr>");
rowSet.next();
}
} catch (SQLException exp) {
}
str.append("</table>");
return str;
}

public void setDatabaseName(String s) {
databaseName = s.trim();
}

public String getDatabaseName() {
return databaseName;
}

public void setTableName(String s) {
tableName = s.trim();
}

public String getTableName() {
return tableName;
}

public void setPassword(String s) {
password = s.trim();

}

public void setUser(String s) {
user = s.trim();
}

public String getUser() {
return user;
}

}
上面的是usebean的源代码
下面的是jsp源代码<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="database.*" %>
<jsp:useBean id="look" class="database.fenye" scope="session" />
<jsp:setProperty  name="look"  property="databaseName" value="a" />
<jsp:setProperty  name="look"  property="tableName" value="b" />
<jsp:setProperty  name="look"  property="user" value="sa" />
<jsp:setProperty  name="look"  property="password" value="sa" />
 <jsp:setProperty  name="look" property="pageSize" value="2" />
<HTML><BODY>
     数据库
     <jsp:getProperty  name= "look" property="databaseName"/>中
     <jsp:getProperty  name= "look" property="tableName"/>表的记录将被分页显示。
<br>共有 <jsp:getProperty name="look" property="pageAllCount"/> 页.
<br>每页最多显示<jsp:getProperty  name="look"  property="pageSize" />条记录。
  <jsp:setProperty  name= "look"  property="showPage" />
  <jsp:getProperty  name= "look"  property="presentPageResult" />
 <BR>当前显示第 <jsp:getProperty  name= "look"  property="showPage"  /> 页,
 <BR>单击“前一页”或“下一页”按纽查看记录
 <Table>
  <tr><td><FORM action="">
          <Input type=hidden name="showPage" value="<%=look.getShowPage()-1 %>" >
          <Input type=submit name="g" value="前一页">
          </FORM>
      </td>
      <td><FORM action="">
          <Input type=hidden name="showPage" value="<%=look.getShowPage()+1 %>" >
          <Input type=submit name="g" value="后一页">
          </Form>
      </td>
      <td> <FORM action="">
           输入页码:<Input type=text name="showPage" size=5 >
           <Input type=submit name="g" value="提交">
           </FORM>
      </td>
  </tr>
  </Table>
</BODY></HTML>
结果出现这种情况

 数据库 a中 b表的记录将被分页显示。 
共有 0 页. 
每页最多显示2条记录。 
当前显示第 1 页, 
单击“前一页”或“下一页”按纽查看记录       输入页码:  
求大侠帮助一下,不能显示数据库的内容!!!! 


--------------------编程问答-------------------- 数据库中是有设置分页的功能么? --------------------编程问答-------------------- 我最近也在写这个,和你的几乎一样 我在书上看到的,总是报错,我把BEAN中的 show方法去掉后,网页能显示了 只有 当前是第几页  点击前一页 后一页的时候 当前页也会变  就是 不显示内容  所以还是 show这个方法 有问题  具体什么问题 我也发贴问了  还不清楚 正在看代码。  --------------------编程问答-------------------- 要用mvc模式,不要把html代码写到java代码中去。直接从前台传来页数,然后用limit语句对查询数据库,返回指定的数据,到前台再显示就行了。
补充:Java ,  Eclipse
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,