仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 483|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA编程:用 javabean 来完成 MySQL 的分页显现

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:25:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。mysql|分页|显现用javabean来完成MySQL的分页显现

●○●○●○●○●○●○●○●○●○●○●○●○●○●○
○作者:刘湛日期:2000-02-04jeru@163.net●
●http://www.cyberlabs.com/~jeru/○
○接待会见爪哇人,猎取更多材料●
●○●○●○●○●○●○●○●○●○●○●○●○●○●○

明天写了个MySQL分页的javabean,是用MySQL里的LIMIT来完成的.
sql="SELECT*FROMTestLIMIT5,10";
这句话的意义就是从第五笔记录入手下手往下读10笔记录出来,这个bean没有毗连数据库的功效,
你可使用本人的类来链接数据库,固然能够用我谁人写的很烂的dbClass.java来连,^_^

这里给出三个程序的源代码。
dbClass.java--用来毗连MySQL数据库。

PageQuery.java--重写了dbClass前往的ResultSet,使其具有分页功效。

example.jsp--jsp文件,能够看到,我只用了两行就完成了分页的功效,固然,
sql语句是不勉励间接写在jsp里的,这里为了让人人看分明,以是这么做了。

自知程度不高,只想举一反三,有甚么讹夺的地方还看妙手指出。

===========================example.jsp===================================
<%@pagelanguage="java"import="java.sql.*,dbclass.*"%>
<%@pagecontentType="text/html;charset=gb2312"%>
<jsp:useBeanid="pq"scope="page"class="dbclass.PageQuery"/>
<html>

<bodybgcolor="#8BA9C9">
<tablebgcolor="#fecda9"cellspacing=0>
<%

Stringquery="SELECT*FROMsystempass";//注重这个"FROM"必定要年夜写
ResultSetrs=pq.myQuery(query,request);
Stringbar=pq.PageLegend();//读取分页提醒栏

out.println("<tr><tdcolspan=2>"+bar+"</td></tr>");
out.println("<tr><tdcolspan=2><hrsize=1color=blue></td></tr>");
while(rs.next()){%>
<tr><td><%=rs.getString(9)%></td><td><%=rs.getString(10)%></td></tr>
<%}%>
</table>
</body>
</html>

===========================PageQuery.java===================================
packagedbclass;
/**
*PageQueryv1.0
*这个类原名叫TViewPage,作者sharetop,用php写的。
*同事Macro曾用PHP改写过这个类,增加了很多功效。
*我感到封装的很好,利用非常便利,利用JSP后,便有了
*设法用JSP来改写,此次为了简明起见,我省往了良多功效,
*只管让它好读,今后有空增加更多的功效,
*
*Mender:
*JeruLiu
*Homepage:
*http://www.cyberlabs.com/~jeru/
*Email:jeru@163.net
*
*本类没有供应毗连数据库的功效,以是需在内部翻开响应的数据库。
*需在内部自界说数据显现格局。
*/

importjava.util.*;
importjava.sql.*;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;

publicclassPageQuery{

intOffset;//纪录偏移量
intTotal;//纪录总数

intMaxLine;//纪录每页显现纪录数
ResultSetrs;//读出的了局

intTPages;//总页数
intCPages;//以后页数

StringPageQuery;//分页显现要传送的参数
StringQuery;//query语句
StringQueryPart;//"FROM"今后的query部分

StringFilePath;

dbClassdb;//objectofdbclass

//constructerdonothing
publicPageQuery(){
//每页显现十行
MaxLine=10;
db=newdbClass();
}

//********读取纪录***************
// 次要事情函数,依据所给的前提从表中读取响应的纪录

publicResultSetmyQuery(Stringquery,HttpServletRequestreq)throwsSQLException{

Stringquery_part,os;
intbegin,offset;

//截取"FROM"今后的query语句
begin=query.indexOf("FROM");
query_part=query.substring(begin,query.length()).trim();

//盘算偏移量
os=req.getParameter("offset");
if(os==null)Offset=0;
elseOffset=Integer.parseInt(os);

//猎取文件名
FilePath=req.getRequestURI();

Query=query;
QueryPart=query_part;

//盘算总的纪录条数
StringSQL="SELECTCount(*)AStotal"+this.QueryPart;
rs=db.executeQuery(SQL);
if(rs.next())
Total=rs.getInt(1);

//设置以后页数和总页数
TPages=(int)Math.ceil((double)this.Total/this.MaxLine);
CPages=(int)Math.floor((double)Offset/this.MaxLine+1);

//依据前提判别,掏出所需纪录
if(Total>0){
SQL=Query+"LIMIT"+Offset+","+MaxLine;
rs=db.executeQuery(SQL);
}
returnrs;
}

//显现总页数
publicintgetTotalPages(){
returnTPages;
}

//显现以后地点页数
publicintgetCurrenPages(){
returnCPages;
}

//**********显现翻页提醒栏*************
//显现首页、下页、上页、尾页
//你能够改成你喜好的款式
publicStringPageLegend(){

Stringstr="";
intfirst,next,prev,last;
first=0;
next=Offset+MaxLine;
prev=Offset-MaxLine;
last=(this.TPages-1)*MaxLine;

if(Offset>=MaxLine)
str+="<Ahref="+FilePath+"?offset="+first+">首页</A>";
elsestr+="首页";
if(prev>=0)
str+="<Ahref="+FilePath+"?offset="+prev+">前页</A>";
elsestr+="前页";
if(next<Total)
str+="<Ahref="+FilePath+"?offset="+next+">后页</A>";
elsestr+="后页";
if(TPages!=0&&CPages<TPages)
str+="<Ahref="+FilePath+"?offset="+last+">尾页</A>";
elsestr+="尾页";

str+="页次:"+getCurrenPages()+"/"+getTotalPages()+"页";
str+=MaxLine+"条/页"+"共"+Total+"条";
returnstr;
}
}

===========================dbClass.java===================================
/**
*aclassusetoconnecttheMySQLdatabaseanddosomequery
*usemm.MySQL.Drive
*JeruLiu,November2,2000,ver-1.1
*
*/

packagedbclass;
importjava.sql.*;

publicclassdbClass{

//public:connectionparameters
StringdbName="Kernel";
StringLogin="root";
StringPassword="MySQL";

StringDBDriver="org.gjt.mm.MySQL.Driver";
StringConnStr="jdbc:MySQL://localhost/"+dbName+"?user="+Login+";password="+Password;
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
ResultSetMetaDataresultsMeta=null;
introws=0;

//public:constructortoloaddriverandconnectdb
publicdbClass(){
//loadmm.MySQL.driver
try
{
Class.forName("org.gjt.mm.MySQL.Driver");
}
//displaycorrespondingerrormessagewhenonloaderroroccur
catch(java.lang.ClassNotFoundExceptione)
{
System.out.println("Classnotfoundexceptionoccur.Messageis:");
System.out.println(e.getMessage());
}

//establishconnectiontothedatabasethroughtdriver
try
{
con=DriverManager.getConnection(ConnStr);
}
//displaysqlerrormessage
catch(SQLExceptione)
{
System.out.print("SQLExceptionoccur.Messageis:");
System.out.print(e.getMessage());
}
}


//performaquerywithrecordsreturned
publicResultSetexecuteQuery(Stringsql)throwsSQLException
{

ResultSetrs=null;
try
{
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next())
this.rows++;
rs=stmt.executeQuery(sql);
}
catch(SQLExceptione)
{
System.out.print("Query:"+e.getMessage());
}

this.rs=rs;
returnrs;
}

//performaquerywithoutrecordsreturned
publicbooleanexecuteUpdate(Stringsql)
{
try
{
stmt=con.createStatement();
stmt.executeUpdate(sql);
returntrue;
}
catch(SQLExceptione)
{
System.out.print("Update:"+e.getMessage());
returnfalse;
}
}

//returnthenumofcolumns
publicintgetColumns()
{
intcolumns=0;
try
{
this.resultsMeta=this.rs.getMetaData();
columns=this.resultsMeta.getColumnCount();
}
catch(SQLExceptione){}
returncolumns;
}

//returnthenumofrows
publicintgetRows()
{
returnthis.rows;
}

publicStringgetDBName(){
returnthis.dbName;
}

}
j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-24 05:53:49 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
10#
发表于 2015-3-17 09:22:11 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
老尸 该用户已被删除
9#
发表于 2015-3-10 19:54:08 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
admin 该用户已被删除
8#
发表于 2015-3-5 06:34:01 | 只看该作者
是一种为 Internet发展的计算机语言
蒙在股里 该用户已被删除
7#
发表于 2015-2-16 15:23:48 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
再见西城 该用户已被删除
6#
发表于 2015-2-6 14:38:48 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
乐观 该用户已被删除
5#
发表于 2015-1-30 17:43:23 | 只看该作者
是一种为 Internet发展的计算机语言
深爱那片海 该用户已被删除
地板
发表于 2015-1-30 10:56:58 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-30 09:29:11 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-21 06:09:21 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表