JAVA/JSP学习系列之八(改写MySQL翻页例子)

  • 来源: 互联网 作者: rocket   2008-03-17/11:36
  • 一、前言

    其实,改写后的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"

    pass
    word=""

    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)


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多