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

一、前言

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

对于其他的地方不要改。

三、改写后的代码如下:

1@ page contentType="text/html;charset=gb2312" 
1@ page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext" 
 1   
 2  
 3//建立一个JNDI查找对象   
 4  
 5InitialContext JNDI_Context = new InitialContext();   
 6  
 7//JNDI查找数据源   
 8  
 9DataSource ds = (DataSource) JNDI_Context.lookup("jdbc/mysqlDbPage");   
10  
11//得到一个数据源连接   
12  
13Connection conn = ds.getConnection();   
14  
15int intPageSize; //一页显示的记录数   
16  
17int intRowCount; //记录总数   
18  
19int intPageCount; //总页数   
20  
21int intPage; //待显示页码   
22  
23java.lang.String strPage;   
24  
25int i;   
26  
27//设置一页显示的记录数   
28  
29intPageSize = 2;   
30  
31//取得待显示页码   
32  
33strPage = request.getParameter("page");   
34  
35if(strPage==null){   
36  
37//表明在QueryString中没有page这一个参数,此时显示第一页数据   
38  
39intPage = 1;   
40  
41} else{   
42  
43//将字符串转换成整型   
44  
45intPage = java.lang.Integer.parseInt(strPage);   
46  
47if(intPage<1) intPage = 1;   
48  
49}   
50  
51// 得到结果   
52  
53stmt = conn.createStatement();   
54  
55ResultSet sqlRst = stmt.executeQuery("select f1 from test");   
56  
57//获取记录总数   
58  
59sqlRst.last();   
60  
61intRowCount = sqlRst.getRow();   
62  
63//记算总页数   
64  
65intPageCount = (intRowCount+intPageSize-1) / intPageSize;   
66  
67//调整待显示的页码   
68  
69if(intPage>intPageCount)   
70  
71intPage = intPageCount;   
72  
 1<html>
 2<head>
 3<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
 4<title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - mysql</title>
 5</head>
 6<body>
 7<table border="1" cellpadding="0" cellspacing="0">
 8<tr>
 9<th>姓名</th>
10</tr>   
11  

if(intPageCount&gt;0)

{

//将记录指针定位到待显示页的第一条记录上

sqlRst.absolute((intPage-1) * intPageSize + 1);

//显示数据

i = 0;

while(i<intpagesize !sqlrst.isafterlast()){="" &&="" <tr="" ```="">

1=sqlRst.getString(1)
1 sqlRst.next();   
2  
3i++;   
4  
5}   
6  
7}   
8  

=intPage页 共``` =intPageCount

1  

if(intPage<intpagecount){ <a="" href="mysqlpage.jsp?page= =intPage+1 ">下一页 }

1  

if(intPage&gt;1){ <a href="mysqlpage.jsp?page= =intPage-1 ">上一页</a> }

1  
2</intpagecount){></body>
3</html>
1   
2  
3//关闭结果集   
4  
5sqlRst.close();   
6  

三、怎么去运行?

见前文《JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)》。

注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)

Published At
Categories with Web编程
Tagged with
comments powered by Disqus