Процедура работы с базой данных JSP (использовать компонент)
Автор: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>
</голова>
<%
//Определяем класс ResultSet
java.sql.ResultSet сначала;
//Устанавливаем источник данных Odbc
Jodb.setConnStr("jdbc:odbc:jtest","","");
//Устанавливаем драйвер Jdbc
Jodb.setDbDriver("sun.jdbc.odbc.JdbcOdbcDriver");
//Выполняем оператор Sql и вызываем метод выполнения класса Jodb
rst=Jodb.execute("выберите * из gbook");
%>
<%
интервал startRowNum;
ИНТ PageSize = 10;
рст.последний();
int rowCount=rst.getRow();
int pageCount=(rowCount+pageSize-1)/pageSize;
интервал intPage;
String strPage=request.getParameter("страница");
если (strPage == ноль)
{
интПейдж = 1;
}
еще
{
intPage=java.lang.Integer.parseInt(strPage);
если (intPage<1)intPage=1;
если(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">
<тр>
<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);
если (rst.isAfterLast())
{
перерыв;
}
%>
<тр>
<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>
<%
}
%>
</таблица>
</центр>
</div>
</тело>
</html>
Файл Jodb.java выглядит следующим образом:
пакет zbean;
импортировать java.sql.*;
//импортируем zbean.*;
общественный класс Джодб
{
общедоступная строка sdbdriver="sun.jdbc.odbc.JdbcOdbcDriver";
общедоступная строка sConnStr;
публичный длинный подсчет;
Строковый идентификатор;
Строка PWD;
Соединение conn=null;
ResultSet 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)
{
сКоннСтр=х;
идентификатор = г;
pwd=а;
}
общедоступный набор результатов (String sql)
{
РС = ноль;
пытаться
{
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);
}
поймать (SQLException ex)
{
System.err.println("Jodb.execute():"+ex.getMessage());
}
вернуть рупий;
}
публичное длинное обновление (String sql)
{
длинный х=0;
пытаться
{
conn=DriverManager.getConnection(sConnStr);
Заявление stmt=conn.createStatement();
х = stmt.executeUpdate (sql);
}
поймать (SQLException эй)
{
System.err.println("Jodb.update():"+ey.getMessage());
}
вернуть х;
}
общедоступная строка pageStr (int page, int pageCount, String url, String showStr)
{
//String str="Page:("+page+"/"+pageCount+") ";
Строка ул="";
Строка fstr;
Строка pstr;
Строка нстр;
Строка lstr;
//int страница=currPage;
//int pageCount=pageCt;
если(showStr=="cn")
{
fstr="Первая страница";
pstr="предыдущая страница";
nstr="следующая страница";
lstr="последняя страница";
}
иначе, если(showStr=="en")
{
fstr="Первый";
pstr="Предыдущий";
нстр="Далее";
lstr="Последний";
}
еще
{
String[] temp_array=split(showStr,",");
если (temp_array == ноль)
{
str="Пожалуйста, введите строку типа: "Первый,Предыдущий,Следующий,Последний"";
вернуть ул;
}
fstr=temp_array[0];
pstr=temp_array[1];
nstr=temp_array[2];
lstr=temp_array[3];
}
/*
интервал npage;
npgae=страница+1;
интервал страницы;
пстраница = страница-1;
если (npage>pageCount)
{npae=pageCount;}
если (ppgae<1)
{страница=1;}
*/
если(страница==1){
str=str+"<a href="+url+"page="+(page+1)+">"+nstr+"</a> ";
str=str+"<a href="+url+"page="+pageCount+">"+lstr+"</a> ";
}
если(страница==pageCount){
str=str+"<a href="+url+"page=1>"+fstr+"</a> ";
str=str+"<a href="+url+"page="+(page-1)+">"+pstr+"</a> ";
}
если(страница>1&&страница<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)
{
символ [] temp_array;
temp_array=str.toCharArray();
int strLength=str.length();
int strInLength=strIn.length();
интервал strInTimes = 0;
int strIndex[]=новый int[strLength];
интервал я = 0;
интервал ii=0;
в то время как (я <= strLength-strInLength)
{
Строка temp_str="";
for(int j=i;j<i+strInLength;j++)
{
temp_str=temp_str+temp_array[j];
}
если (temp_str.equals (strIn))
{
стрИнТаймс++;
стрИндекс[ii]=я;
я = я + стрИнДлина;
ii++;
}
еще
{
я++;
}
}
если (strInTimes<1)
{
Строка [] back_str = null;
вернуть back_str;
}
еще
{
String 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());
вернуть back_str;
}
}
}