一、前言 其实,改写后的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)