1. 程式人生 > >jsp查詢資料庫分頁顯示

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的規則發現要用空格符佔位,符號是&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>