代码在最下面
***********************分**********界**********线*************************************
分页难点:能显示第一页,点击下一页时,显示不了。原因是在点击查询按钮时通过 request.getParameter("number")获取输入文本框的查询条件,在点击下一页时丢失了获取的值,就通过链接来传递获取的number,在链接中加入number=<%=strNumber%>,而page=<%=intPage+1%>是用来传递当前的页码值,下一页的链接如下:
<a href="MyJsp.jsp?page=<%=intPage+1%>&number=<%=strNumber%>">下一页</a>
***********************分**********界**********线*************************************
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); 成功!
*********小分界线*************
一个简单的画边框的方法:
<table border="1" cellpadding="4" bordercolor="#a7a7a7" style="empty-cells: show; border-collapse: collapse;">
注: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.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>数据库内容显示</title>
</head>
<% //变量声明
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;
%>
<body>
<h1 align="center">数据库查询</h1>
<form action="" method="post" name="f" id="f">
<div align="center">
号码:<input type="text" id="number" name="number" >
<input class=buttonface type="submit" name="chaxun" value= 查询 />
<br><br>
</div>
<hr/>
</form>
<form method="POST">
第<%=intPage%>页 每页<%=intPageSize%>行 共<%=intPageCount%>页
<%if(intPage<intPageCount){%>
<a href="MyJsp.jsp?page=<%=intPage+1%>&number=<%=strNumber%>">下一页</a>
<%}%>
<%if(intPage>1){%>
<a href="MyJsp.jsp?page=<%=intPage-1%>&number=<%=strNumber%>">上一页</a>
<%}%>
</form>
<table border="1" cellpadding="4" bordercolor="#a7a7a7" style="empty-cells: show; border-collapse: collapse;">
<tr>
<th>date</th>
<th>haoma</th>
<th>mingcheng</th>
<th>shuliang</th>
<th>beizhu</th>
</tr>
<%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);%>
<tr>
<td><%=date%></td>
<td><%=haoma%></td>
<td><%=mingcheng%></td>
<td><%=shuliang%></td>
<td><%=beizhu%></td>
</tr>
<%rs.next();
i++;
}
}%>
</table>
<%//关闭结果集
rs.close();
//关闭SQL语句对象
stmt.close();
//关闭数据库
conn.close();%>
</body>
</html>