jsp查询数据库分页显示

时间:2022-09-20 20:54:31

 

代码在最下面

***********************分**********界**********线*************************************

分页难点:能显示第一页,点击下一页时,显示不了。原因是在点击查询按钮时通过 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的规则发现要用空格符占位,符号是&nbsp;,于是想读取到数据库的内容,判断一下如果是null,就转换成空格符,

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

 

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

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

 

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

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

 

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

改成: beizhu="".equals(rs.getString(5).trim())?"&nbsp;":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())?"&nbsp;":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>