JSP數(shù)據(jù)庫(kù)操作例程(Use Bean)
2020-07-27 21:52:51
供稿:網(wǎng)友
 
						- 數(shù)據(jù)分頁(yè)顯示 - JDBC 2.0:ODBC 
通過(guò)jdbc:odbc可以實(shí)現(xiàn)Jsp對(duì)數(shù)據(jù)庫(kù)的操作,在這個(gè)例子中我將數(shù)據(jù)庫(kù)的連接寫(xiě)在了一個(gè)JavaBean中,可以實(shí)現(xiàn)重復(fù)使用 
pagetest.jsp文件: 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<%@page contentType="text/html;charset=gb2312" %> 
<jsp:useBean id="Htool" scope="session" class="zbean.HtmlTool"/> 
<jsp:useBean id="Jodb" scope="session" class="zbean.Jodb"/> 
<html> 
<head> 
<title>數(shù)據(jù)庫(kù)分頁(yè)測(cè)試</title> 
</head> 
<% 
//定義ResultSet類(lèi) 
java.sql.ResultSet rst; 
//設(shè)定Odbc數(shù)據(jù)源 
Jodb.setConnStr("jdbc:odbc:jtest","",""); 
//設(shè)定Jdbc驅(qū)動(dòng)程序 
Jodb.setDbDriver("sun.jdbc.odbc.JdbcOdbcDriver"); 
//執(zhí)行Sql語(yǔ)句,調(diào)用Jodb類(lèi)的execute方法 
rst=Jodb.execute("select * from gbook"); 
%> 
  <% 
int startRowNum; 
int pageSize=10; 
rst.last(); 
int rowCount=rst.getRow(); 
int pageCount=(rowCount+pageSize-1)/pageSize; 
int intPage; 
String strPage=request.getParameter("page"); 
if(strPage==null) 
{ 
intPage=1; 
} 
else 
{ 
intPage=java.lang.Integer.parseInt(strPage); 
if(intPage<1)intPage=1; 
if(intPage>pageCount)intPage=pageCount; 
} 
startRowNum=(intPage-1)*pageSize+1; 
%> 
<body> 
<div align="center"> 
 <center> 
 <p>數(shù)據(jù)庫(kù)分頁(yè)測(cè)試</p> 
 <p><%= Htool.getStr(Jodb.pageStr(intPage,pageCount,"pagetest.jsp?","en")) %></p> 
 <table border="1" width="600" bordercolorlight="#000000" cellspacing="0" cellpadding="2" bordercolordark="#FFFFFF"> 
  <tr> 
   <td width="49"><font size="2">編號(hào)</font></td> 
   <td width="91"><font size="2">姓 名</font></td> 
   <td width="174"><font size="2">電子郵箱</font></td> 
   <td width="250"><font size="2">留言</font></td> 
  </tr> 
<% 
for(int i=0;i<pageSize;i++){ 
rst.absolute(startRowNum+i); 
if(rst.isAfterLast()) 
{ 
break; 
} 
%> 
<tr> 
   <td width="49"><%= rst.getLong("id") %> </td> 
   <td width="91"><%= rst.getString("name") %> </td> 
   <td width="174"><%= rst.getString("email") %> </td> 
   <td width="250"><%= rst.getString("pnote") %> <%= rst.getRow() %></td> 
  </tr> 
<% 
} 
%> 
 </table> 
 </center> 
</div> 
</body> 
</html> 
Jodb.java文件如下: 
package zbean; 
import java.sql.*; 
//import zbean.*; 
public class Jodb 
{ 
    public String sdbdriver="sun.jdbc.odbc.JdbcOdbcDriver"; 
public String sConnStr; 
public long count; 
String uid; 
String pwd; 
Connection conn=null; 
ResultSet rs=null; 
public Jodb() 
{ 
try 
{ 
Class.forName(sdbdriver); 
} 
catch(java.lang.ClassNotFoundException e) 
{ 
System.err.println("Jodb():"+e.getMessage()); 
} 
} 
public void setDbDriver(String y) 
{ 
sdbdriver=y; 
} 
public void setConnStr(String x,String z,String a) 
{ 
sConnStr=x; 
uid=z; 
pwd=a; 
} 
public ResultSet execute(String sql) 
{ 
rs=null; 
try 
{ 
conn=DriverManager.getConnection(sConnStr,uid,pwd); 
Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
rs=stmt.executeQuery(sql); 
} 
catch(SQLException ex) 
{ 
System.err.println("Jodb.execute():"+ex.getMessage()); 
} 
return rs; 
} 
public long update(String sql) 
{ 
long x=0; 
try 
{ 
conn=DriverManager.getConnection(sConnStr); 
Statement stmt=conn.createStatement(); 
x=stmt.executeUpdate(sql); 
} 
catch(SQLException ey) 
{ 
System.err.println("Jodb.update():"+ey.getMessage()); 
} 
return x; 
} 
public String pageStr(int page,int pageCount,String url,String showStr) 
{ 
//String str="Page:("+page+"/"+pageCount+")  "; 
String str=""; 
String fstr; 
String pstr; 
String nstr; 
String lstr; 
//int page=currPage; 
//int pageCount=pageCt; 
if(showStr=="cn") 
{ 
fstr="第一頁(yè)"; 
pstr="上一頁(yè)"; 
nstr="下一頁(yè)"; 
lstr="最末頁(yè)"; 
} 
else if(showStr=="en") 
{ 
fstr="First"; 
pstr="Previous"; 
nstr="Next"; 
lstr="Last"; 
} 
else 
{ 
String[] temp_array=split(showStr,","); 
if(temp_array==null) 
{ 
str="Please input String like: "First,Previous,Next,Last""; 
return str; 
} 
fstr=temp_array[0]; 
pstr=temp_array[1]; 
nstr=temp_array[2]; 
lstr=temp_array[3]; 
} 
/* 
int npage; 
npgae=page+1; 
int ppage; 
ppage=page-1; 
if(npage>pageCount) 
{npae=pageCount;} 
if(ppgae<1) 
{ppage=1;} 
*/ 
if(page==1){ 
str=str+"<a href="+url+"page="+(page+1)+">"+nstr+"</a> "; 
str=str+"<a href="+url+"page="+pageCount+">"+lstr+"</a> "; 
} 
if(page==pageCount){ 
str=str+"<a href="+url+"page=1>"+fstr+"</a> "; 
str=str+"<a href="+url+"page="+(page-1)+">"+pstr+"</a> "; 
} 
if(page>1&&page<pageCount){ 
str=str+"<a href="+url+"page=1>"+fstr+"</a> "; 
str=str+"<a href="+url+"page="+(page-1)+">"+pstr+"</a> "; 
str=str+"<a href="+url+"page="+(page+1)+">"+nstr+"</a> "; 
str=str+"<a href="+url+"page="+pageCount+">"+lstr+"</a> "; 
} 
return str; 
} 
public String[] split(String str,String strIn) 
{ 
char[] temp_array; 
temp_array=str.toCharArray(); 
int strLength=str.length(); 
int strInLength=strIn.length(); 
int strInTimes=0; 
int strIndex[]=new int[strLength]; 
int i=0; 
int ii=0; 
while(i<=strLength-strInLength) 
{ 
String temp_str=""; 
for(int j=i;j<i+strInLength;j++) 
{ 
temp_str=temp_str+temp_array[j]; 
} 
if(temp_str.equals(strIn)) 
{ 
strInTimes++; 
strIndex[ii]=i; 
i=i+strInLength; 
ii++; 
} 
else 
{ 
i++; 
} 
} 
if(strInTimes<1) 
{ 
String[] back_str=null; 
return back_str; 
} 
else 
{ 
String back_str[]=new String[strInTimes+1]; 
back_str[0]=str.substring(0,strIndex[0]); 
for(int k=1;k<strInTimes;k++) 
{ 
back_str[k]=str.substring(strIndex[k-1]+strInLength,strIndex[k]); 
} 
back_str[strInTimes]=str.substring(strIndex[strInTimes-1]+strInLength,str.length()); 
return back_str; 
} 
} 
}