JAVA/JSP学习系列之八(改写MySQL翻页例子)
2023-06-13 09:13:45 时间
一、前言
其实,改写后的JDBCData-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之六(MySQL翻页例子)》简单改写了一下。
二、配置
(1)JDBC
需要将用到的JDBC驱动Copy到[ORION]/lib目录下
(2)data-source
在[ORION]/config/data-sources.xml文件中加入如下:
〈data-source
class="com.evermind.sql.DriverManagerDataSource"
name="mySqlDbpage"
location="jdbc/HypersonicCoreDS"
xa-location="jdbc/xa/HypersonicXADS"
ejb-location="jdbc/mysqlDbPage"
connection-driver="org.gjt.mm.mysql.Driver"
username="root"
password=""
url="jdbc:mysql://localhost/test"
inactivity-timeout="30"
/〉
需要注意的是:
(1)ejb-location这个后面的“jdbc/mysqlDbPage”是JNDI要来查找的。
(2)connection-driver为JDBC数据库驱动
(3)url是JDBC中的URL
(4)username为数据库用户名
(5)password为用户密码
(6)inactivity-timeout为数据库连接超时,默认为30秒
对于其他的地方不要改。
三、改写后的代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*,javax.sql.DataSource,javax.naming.InitialContext"%>
<%
//建立一个JNDI查找对象
InitialContextJNDI_Context=newInitialContext();
//JNDI查找数据源
DataSourceds=(DataSource)JNDI_Context.lookup("jdbc/mysqlDbPage");
//得到一个数据源连接
Connectionconn=ds.getConnection();
intintPageSize;//一页显示的记录数
intintRowCount;//记录总数
intintPageCount;//总页数
intintPage;//待显示页码
java.lang.StringstrPage;
inti;
//设置一页显示的记录数
intPageSize=2;
//取得待显示页码
strPage=request.getParameter("page");
if(strPage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage=1;
}else{
//将字符串转换成整型
intPage=java.lang.Integer.parseInt(strPage);
if(intPage<1)intPage=1;
}
//得到结果
stmt=conn.createStatement();
ResultSetsqlRst=stmt.executeQuery("selectf1fromtest");
//获取记录总数
sqlRst.last();
intRowCount=sqlRst.getRow();
//记算总页数
intPageCount=(intRowCount+intPageSize-1)/intPageSize;
//调整待显示的页码
if(intPage>intPageCount)
intPage=intPageCount;
%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>JSP数据库操作例程-数据分页显示-JDBC2.0-mysql</title>
</head>
<body>
<tableborder="1"cellspacing="0"cellpadding="0">
<tr>
<th>姓名</th>
</tr>
<%if(intPageCount>0)
{
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1)*intPageSize+1);
//显示数据
i=0;
while(i<intPageSize&&!sqlRst.isAfterLast()){%>
<tr>
<td>
<%=sqlRst.getString(1)%>
</td>
</tr>
<%sqlRst.next();
i++;
}
}
%>
</table>
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%><ahref="mysqlpage.jsp?page=<%=intPage+1%>">下一页</a><%}%>
<%if(intPage>1){%><ahref="mysqlpage.jsp?page=<%=intPage-1%>">上一页</a><%}%>
</body>
</html>
<%
//关闭结果集
sqlRst.close();
%>
三、怎么去运行?
见前文《JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)》。
注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)
其实,改写后的JDBCData-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之六(MySQL翻页例子)》简单改写了一下。
二、配置
(1)JDBC
需要将用到的JDBC驱动Copy到[ORION]/lib目录下
(2)data-source
在[ORION]/config/data-sources.xml文件中加入如下:
〈data-source
class="com.evermind.sql.DriverManagerDataSource"
name="mySqlDbpage"
location="jdbc/HypersonicCoreDS"
xa-location="jdbc/xa/HypersonicXADS"
ejb-location="jdbc/mysqlDbPage"
connection-driver="org.gjt.mm.mysql.Driver"
username="root"
password=""
url="jdbc:mysql://localhost/test"
inactivity-timeout="30"
/〉
需要注意的是:
(1)ejb-location这个后面的“jdbc/mysqlDbPage”是JNDI要来查找的。
(2)connection-driver为JDBC数据库驱动
(3)url是JDBC中的URL
(4)username为数据库用户名
(5)password为用户密码
(6)inactivity-timeout为数据库连接超时,默认为30秒
对于其他的地方不要改。
三、改写后的代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*,javax.sql.DataSource,javax.naming.InitialContext"%>
<%
//建立一个JNDI查找对象
InitialContextJNDI_Context=newInitialContext();
//JNDI查找数据源
DataSourceds=(DataSource)JNDI_Context.lookup("jdbc/mysqlDbPage");
//得到一个数据源连接
Connectionconn=ds.getConnection();
intintPageSize;//一页显示的记录数
intintRowCount;//记录总数
intintPageCount;//总页数
intintPage;//待显示页码
java.lang.StringstrPage;
inti;
//设置一页显示的记录数
intPageSize=2;
//取得待显示页码
strPage=request.getParameter("page");
if(strPage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage=1;
}else{
//将字符串转换成整型
intPage=java.lang.Integer.parseInt(strPage);
if(intPage<1)intPage=1;
}
//得到结果
stmt=conn.createStatement();
ResultSetsqlRst=stmt.executeQuery("selectf1fromtest");
//获取记录总数
sqlRst.last();
intRowCount=sqlRst.getRow();
//记算总页数
intPageCount=(intRowCount+intPageSize-1)/intPageSize;
//调整待显示的页码
if(intPage>intPageCount)
intPage=intPageCount;
%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>JSP数据库操作例程-数据分页显示-JDBC2.0-mysql</title>
</head>
<body>
<tableborder="1"cellspacing="0"cellpadding="0">
<tr>
<th>姓名</th>
</tr>
<%if(intPageCount>0)
{
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1)*intPageSize+1);
//显示数据
i=0;
while(i<intPageSize&&!sqlRst.isAfterLast()){%>
<tr>
<td>
<%=sqlRst.getString(1)%>
</td>
</tr>
<%sqlRst.next();
i++;
}
}
%>
</table>
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%><ahref="mysqlpage.jsp?page=<%=intPage+1%>">下一页</a><%}%>
<%if(intPage>1){%><ahref="mysqlpage.jsp?page=<%=intPage-1%>">上一页</a><%}%>
</body>
</html>
<%
//关闭结果集
sqlRst.close();
%>
三、怎么去运行?
见前文《JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)》。
注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)
相关文章
- mysql:Java通过驱动包(jar包)连接MySQL数据库—步骤总结及验证
- 阿里云上部署远程MySQL服务器(阿里云远程mysql)
- 开启Java之门:访问MySQL数据库(java访问mysql数据库)
- MySQL事务:警惕未提交的风险(mysql事务未提交)
- 使用JSP连接MySQL数据库的简单步骤(jsp连接mysql数据库)
- MySQL联表操作:从多张表中删除记录(mysql联表删除)
- CentOS7启动MySQL服务的方法(centos7重启mysql)
- 使用Java操作MySQL数据库快速精准查询(java查询mysql数据库)
- 编码修改MySQL数据库为GBK编码(mysql修改gbk)
- MySQL驱动程序:Java集成简易操作(mysql的java驱动)
- Mysql与JSP连续不断的发展(mysql与jsp)
- 自动提交MySQL事务中的Java自动提交实践(mysql事务java)
- Java 调用 MySQL,编写数据库程序(java导入mysql)
- 使用JSP连接MySQL数据库(jsp连接池mysql)
- MySQL操作技巧之计算与处理金额(mysql处理金额)
- 如何在MySQL中为库分配权限(mysql给库赋权)
- 数据实现MySQL数据的jsp前端展示(jsp显示mysql)
- 提升数据安全:针对MySQL的防火墙设置(防火墙设置mysql)
- MySQL远程使用:掌握基础知识,远程操作Mysql数据库。(mysql远程使用)
- 实操LNMP:快速安装MySQL数据库!(lnmp安装mysql)
- Java驾驭MySQL,读写如飞(java读写mysql)
- Java轻松连接并执行MySQL数据库操作(java执行mysql)
- 使用Java实现MySQL数据恢复操作(java恢复mysql)
- 最多Mysql: 开启数据库新纪元(mysql 出现次数)
- MySQL事件定时任务的定义和使用方法(MySQL中事件的定义)
- MySQL存储过程中的call语法详解(mysql中call用法)
- MySQL引擎比较MyISAMInnoDBMemory(mysql三种引擎区别)
- MySQL下载及安装教程快速掌握MySql下载及安装方法,更高效地使用MySql数据库(mysql下载了在哪)
- MYSQL离线使用方法大揭秘不联网也能愉快地使用MySQL(mysql 不联网吗)