jsp查詢資料庫分頁顯示
程式碼在最下面
***********************分**********界**********線*************************************
分頁難點:能顯示第一頁,點選下一頁時,顯示不了。原因是在點選查詢按鈕時通過 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>