Advertisement

jsp查询数据库分页显示

阅读量:

代码在最下面

线**************

分页难点:能显示第一页,点击下一页时,显示不了。原因是在点击查询按钮时通过 request.getParameter("number")获取输入文本框的查询条件,在点击下一页时丢失了获取的值,就通过链接来传递获取的number,在链接中加入number=<%=strNumber%>,而page=<%=intPage+1%>是用来传递当前的页码值,下一页的链接如下:

下一页

线**************

date的字段显示的很神奇,都是2011-01-01 00:00:00,不知原因,只好截取了前面一节

date=rs.getString(1).substring(0,10);

线**************

查询的数据用表格显示,备注一栏有时数据为空值,空值的单元格会没有边框,查html的规则发现要用空格符占位,符号是 ,于是想读取到数据库的内容,判断一下如果是null,就转换成空格符,

试了下: beizhu=rs.getString(5)==null?" ":rs.getString(5); 失败

想到读取的内容也可能是"",空的地方没有显示null

改成: beizhu=(rs.getString(5)==null||rs.getString(5)=="")?" ":rs.getString(5); 还是失败

发现null或者""都读取不到,后,原来""是字符串。。。不用==来判断,用字符串的equals

改成: beizhu="".equals(rs.getString(5))?" ":rs.getString(5); 有的地方成功了

发现没有成功的地方是因为,在数据库表中,备注一栏有的是确实空的,即为"",经过上面语句的转换,会有一个空格占位;有的单元格内则有一些空格,不是""不会转换,读取之后在html中空格是不会显示的,所以还是显示没有边框的空栏,trim()把空格去掉!

改成: beizhu="".equals(rs.getString(5).trim())?" ":rs.getString(5); 成功!

小分界线****

一个简单的画边框的方法:

注:bordercolor="#a7a7a7",挺浅的灰色

上面判断了那么多都没有这个顶用

==========下面是代码====================空值显示边框的两种方法都用了====转换空格和画边框=========

<%@ page contentType="text/html;charset=gb2312"%>

<%@page language="java" import="java.sql.*" %>

<%@page language="java" import="java.util.*" %>

<%@page language="java" import="java.lang.*" %>

数据库内容显示

<% //变量声明

Connection conn; //数据库连接对象

Statement stmt; //SQL语句对象

ResultSet rs; //结果集对象

String strCon; //数据库连接字符串

//SQL语句

int intPageSize; //一页显示的记录数

int intRowCount; //记录总数

int intPageCount; //总页数

int intPage; //待显示页码

String strPage;

int i;

//设置一页显示的记录数

intPageSize = 6;

//取得待显示页码

strPage = request.getParameter("page");

if(strPage==null||strPage==""){//表明在QueryString中没有page这一个参数,此时显示第一页数据

intPage = 1;

}

else{//将字符串转换成整型

intPage = java.lang.Integer.parseInt(strPage);

//if(intPage<1) intPage = 1;

}

String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

String url="jdbc:sqlserver://localhost:1433";

String user="sa";

String password="";

//装载JDBC驱动程序

Class.forName(driver);

//设置数据库连接字符串

conn = java.sql.DriverManager.getConnection(url,user,password);

//创建一个可以滚动的只读的SQL语句对象

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql;

String strNumber = request.getParameter("number"); //获取页面传来的号码

//查询的语句

sql = "SELECT * FROM [数据库名].[dbo].[表名] where [haoma] like '%"+strNumber+"%'";

//执行SQL语句并获取结果集

rs = stmt.executeQuery(sql);

//获取记录总数

rs.last();//??光标在最后一行

intRowCount = rs.getRow();//获得当前行号

//记算总页数

intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//调整待显示的页码

if(intPage>intPageCount) intPage = intPageCount;

%>

数据库查询

号码:




第<%=intPage%>页 每页<%=intPageSize%>行 共<%=intPageCount%>页

<%if(intPage<intPageCount){%>

下一页

<%}%>

<%if(intPage>1){%>

上一页

<%}%>

<%if(intPageCount>0){

//将记录指针定位到待显示页的第一条记录上

rs.absolute((intPage-1) * intPageSize + 1);

//显示数据

i = 0;

String date,haoma,mingcheng,shuliang,beizhu;

while(i<intPageSize && !rs.isAfterLast()){

date=rs.getString(1).substring(0,10);

haoma=rs.getString(2);

mingcheng=rs.getString(3);

shuliang=rs.getString(4);

beizhu="".equals(rs.getString(5).trim())?" ":rs.getString(5);%>

<%rs.next();

i++;

}

}%>

date haoma mingcheng shuliang beizhu
<%=date%> <%=haoma%> <%=mingcheng%> <%=shuliang%> <%=beizhu%>

<%//关闭结果集

rs.close();

//关闭SQL语句对象

stmt.close();

//关闭数据库

conn.close();%>

全部评论 (0)

还没有任何评论哟~