JSPデータベース操作ルーチン(Bean使用)
著者:Eve Cole
更新時間:2009-07-02 17:13:24
- ページ単位のデータ表示 - JDBC 2.0: ODBC
Jsp は jdbc:odbc を通じてデータベースを操作できます。この例では、再利用できる JavaBean でデータベース接続を作成しました。
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>
<頭>
<title>データベース ページング テスト</title>
</head>
<%
//ResultSetクラスを定義する
最初にjava.sql.ResultSet;
//Odbc データソースを設定します
Jodb.setConnStr("jdbc:odbc:jtest","","");
//Jdbcドライバーを設定する
Jodb.setDbDriver("sun.jdbc.odbc.JdbcOdbcDriver");
//SQL文を実行し、Jodbクラスのexecuteメソッドを呼び出す
rst=Jodb.execute("gbook から * を選択");
%>
<%
int startRowNum;
int pageSize=10;
rst.last();
int rowCount=rst.getRow();
int pageCount=(rowCount+pageSize-1)/pageSize;
int intPage;
String strPage=request.getParameter("ページ");
if(strPage==null)
{
intPage=1;
}
それ以外
{
intPage=java.lang.Integer.parseInt(strPage);
if(intPage<1)intPage=1;
if(intPage>pageCount)intPage=pageCount;
}
startRowNum=(intPage-1)*pageSize+1;
%>
<本文>
<div align="center">
<中央>
<p>データベース ページング テスト</p>
<p><%= Htool.getStr(Jodb.pageStr(intPage,pageCount,"pagetest.jsp?","en")) %></p>
<table border="1" width="600" bordercolorlight="#000000" cellpacing="0" cellpadding="2" bordercolordark="#FFFFFF">
<tr>
<td width="49"><font size="2">番号</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())
{
壊す;
}
%>
<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>
<%
}
%>
</テーブル>
</center>
</div>
</body>
</html>
Jodb.java ファイルは次のとおりです。
zbean パッケージ;
インポート java.sql.*;
// zbean.* をインポートします。
パブリッククラスJodb
{
public String sdbdriver="sun.jdbc.odbc.JdbcOdbcDriver";
パブリック文字列 sConnStr;
パブリックロングカウント。
文字列uid;
文字列 pwd;
接続 conn=null;
結果セット rs=null;
publicJodb()
{
試す
{
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;
}
パブリックResultSet実行(文字列SQL)
{
rs=null;
試す
{
conn=DriverManager.getConnection(sConnStr,uid,pwd);
ステートメント 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());
}
rsを返します。
}
パブリック長い更新(文字列SQL)
{
長い x=0;
試す
{
conn=DriverManager.getConnection(sConnStr);
ステートメント stmt=conn.createStatement();
x=stmt.executeUpdate(sql);
}
catch(SQLException ey)
{
System.err.println("Jodb.update():"+ey.getMessage());
}
x を返します。
}
public String pageStr(int page,int pageCount,String url,String showStr)
{
//String str="Page:("+page+"/"+pageCount+") ";
文字列 str="";
文字列 fstr;
文字列 pstr;
文字列 nstr;
文字列 lstr;
//int page=currPage;
//int pageCount=pageCt;
if(showStr=="cn")
{
fstr="最初のページ";
pstr="前のページ";
nstr="次のページ";
lstr="最後のページ";
}
else if(showStr=="en")
{
fstr="最初";
pstr="前";
nstr="次へ";
lstr="最後";
}
それ以外
{
String[] temp_array=split(showStr,",");
if(temp_array==null)
{
str="「最初、前、次、最後」のような文字列を入力してください。";
文字列を返します。
}
fstr=temp_array[0];
pstr=temp_array[1];
nstr=temp_array[2];
lstr=temp_array[3];
}
/*
int npage;
npgae=ページ+1;
int ページ;
ページ=ページ-1;
if(npage>pageCount)
{npae=ページ数;}
if(ppgae<1)
{ppage=1;}
*/
if(ページ==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> ";
}
文字列を返します。
}
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)
{
文字列 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++;
}
それ以外
{
i++;
}
}
if(strInTimes<1)
{
文字列[] back_str=null;
return back_str;
}
それ以外
{
文字列 back_str[]=新しい文字列[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;
}
}
}