在与数据库进行连接的时候,会牵扯到数据库连接池的配置,本文将详细介绍mysql数据库连接池配置,需要了解跟多的朋友可以参考下
第一步:写javabean 代码如下:
package withouttears.jdbc.db;
import java.util.HashMap;
import java.sql.*;
//JNDI有两个核心接口Context和DirContext,
//Context中包含了基本的名字操作,而DirContext则将这些操作扩展到目录服务。
import javax.naming.Context;
import javax.naming.InitialContext;
//数据库资源的连接工厂是javax.sql.DataSource对象,
//它可以创建java.sql.Connection数据库连接对象。
import javax.sql.DataSource;
//目前您可以从Java开发者连接(http://java.sun.com/products/jdbc/download.html#rowsetcobundle1_0)
//下载CachedRowSet的实现。下载并解压缩安装文件后,将"rowset.jar"文件放到您的类目录下。
//CachedRowSet在sun.jdbc.rowset包中。
import sun.jdbc.rowset.CachedRowSet;
/**
* 作者:wiThouTTears
* 时间:2006-12-13
* */
public class Database {
/**************************************************************/
/* 函数:localhost
* 功能:建立连接池
* */
private static DataSource localhost(){
DataSource ds=null;
//在HashMap中通过get()来获取value,通过put()来插入value,
//ContainsKey()则用来检验对象是否已经存在
HashMap
cachedDs=new HashMap (); if(cachedDs.containsKey("ds"))//取出空闲状态的数据库连接 { /* 在DataSource中事先建立了多个数据库连接, * 这些数据库连接保存在连接池(Connect Pool)中。 * Java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接; * 当程序访问数据库结束,再将数据库连接放回连接池。 * */ ds = (DataSource)cachedDs.get("ds"); } else try { /*在javax.naming包中提供了Context接口, * 该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。 * */ Context initCtx = new InitialContext(); //lookup(String name):返回与指定的名字绑定的对象,获得数据库连接工厂 ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/testdb"); cachedDs.put("ds", ds); } catch(Exception e) { e.printStackTrace(); } return ds; } /**************************************************************/ /* 函数:getConnection * 功能:库的连接 * */ private static Connection getConnection(){ Connection conn = null; try { DataSource ds = localhost(); conn = ds.getConnection(); } catch(Exception e) { e.printStackTrace(); } return conn; } /**************************************************************/ /* 函数:close * 功能:关闭连接 * */ private static void close(Connection conn) { try { if(conn != null) conn.close(); } catch(SQLException e) { e.printStackTrace(); } } /**************************************************************/ /* 函数:executeQuery * 功能:数据查询 * */ public static CachedRowSet executeQuery(String sql) { Connection conn=null; CachedRowSet rs=null; try{ rs=new CachedRowSet(); conn=getConnection(); Statement stmt=conn.createStatement(); ResultSet rs1=stmt.executeQuery(sql); rs.populate(rs1); } catch(Exception e) { //System.out.println(e.toString()); } finally{ try { conn.close(); } catch(Exception ex) {} } return rs; } /**************************************************************/ /* 函数:executeUpdate * 功能:数据更新(添加/更改/删除) * */ public static boolean executeUpdate(String sql) { boolean bl; bl = false; Connection conn = getConnection(); try { Statement stmt = conn.createStatement(); if(stmt.executeUpdate(sql) > 0) stmt.close(); bl = true; } catch(SQLException e) { } finally { close(conn); } return bl; } /**************************************************************/ } 编译得到withouttears/db/Database.class并放到E:/MyWorkSpace/test/WEB-INF/classes下,即E:/MyWorkSpace/test/WEB-INF/classes/withouttears/db/Database.class,注意别弄错了。 第二步:配置Tomcat(我用是Tomcat 5.5.7) 1. 在C:/Program Files/Tomcat 5.5.7/conf/Catalina/localhost下新建一个test.xml,内容如下: 注:docBase为你的web文件所在地,我用的是E:/MyWorkSpace/test。path可写可不写,但在Linux下必须写上,Windows下不写我测试可以用,最好写上。这里的test.xml指定的文件夹不像我们平时用的那样在C:/Program Files/Tomcat 5.5.7/webapps/test,不过目的一样都是表示用http://localhost:8080/test/来访问,相当于IIS下的虚拟目录,可以是任意的。 2. 在C:/Program Files/Tomcat 5.5.7/conf/下建立context.xml,在E:/MyWorkSpace/test下新建WEB-INF/web.xml。 context.xml 代码如下: WEB-INF/web.xml META-INF/context.xml auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/mytestdb" username="root" password="157744375" maxActive="100" maxIdle="30" maxWait="10000" /> 注: 链接池配置文件,这样我们就可以用第一步写的Javabean类Database中的localhost()函数来读取这个content.xml中的jdbc/testdb名称 web.xml 代码如下: test test.jsp 注: web.xml放web的默认主页(如:test.jsp或者index.jsp)和程序中要用到servlet的映射,不管它我们这里用不到。 第三步:写test.jsp 代码如下: Insert title String sql=null; sql="select * from table_test"; ResultSet rs=Database.executeQuery(sql); try{ while(rs.next()){ %> 濮撳悕锛 Statement: The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn