关于连接数据并分页显示数据库内容的问题
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