一、前言
其实,改写后的jdbc data-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秒
对于其他的地方不要改。
三、改写后的代码如下:
<%@ page contenttype="text/html;charset=gb2312" %>
<%@ page import="java.sql.*, javax.sql.datasource, javax.naming.initialcontext" %>
<%
//建立一个jndi查找对象
initialcontext jndi_context = new initialcontext();
//jndi查找数据源
datasource ds = (datasource) jndi_context.lookup("jdbc/mysqldbpage");
//得到一个数据源连接
connection conn = ds.getconnection();
int intpagesize; //一页显示的记录数
int introwcount; //记录总数
int intpagecount; //总页数
int intpage; //待显示页码
java.lang.string strpage;
int i;
//设置一页显示的记录数
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();
resultset sqlrst = stmt.executequery("select f1 from test");
//获取记录总数
sqlrst.last();
introwcount = sqlrst.getrow();
//记算总页数
intpagecount = (introwcount+intpagesize-1) / intpagesize;
//调整待显示的页码
if(intpage>intpagecount)
intpage = intpagecount;
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>jsp数据库操作例程 - 数据分页显示 - jdbc 2.0 - mysql</title>
</head>
<body>
<table border="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){%><a href="mysqlpage.jsp?page=<%=intpage+1%>">下一页</a><%}%>
<%if(intpage>1){%><a href="mysqlpage.jsp?page=<%=intpage-1%>">上一页</a><%}%>
</body>
</html>
<%
//关闭结果集
sqlrst.close();
%>
三、怎么去运行?
见前文《java/jsp学习系列之五(jdbc-odbc翻页例子)》。
注意:mysql数据库为test,中间有个表test,有个字段f1(varchar)
新闻热点
疑难解答