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<Object,Object> cachedDs=new HashMap<Object,Object> ();
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,内容如下: <Context docBase="E:/MyWorkSpace/test" path="/test"></Context>
注: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


代码如下:

<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>META-INF/context.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Resource name="jdbc/testdb"
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"
/>
</Context>

注: 链接池配置文件,这样我们就可以用第一步写的Javabean类Database中的localhost()函数来读取这个content.xml中的jdbc/testdb名称
web.xml


代码如下:

<?xml version="1.0" encoding="gbk"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
test</display-name>
<welcome-file-list>
<welcome-file>test.jsp</welcome-file>
</welcome-file-list>
<!-- JSPC servlet mappings start -->
<!-- JSPC servlet mappings end -->
</web-app>

注: web.xml放web的默认主页(如:test.jsp或者index.jsp)和程序中要用到servlet的映射,不管它我们这里用不到。
第三步:写test.jsp


代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="withouttears.jdbc.db.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title</title>
</head>
<body>
<%
String sql=null;
sql="select * from table_test";
ResultSet rs=Database.executeQuery(sql);
try{
while(rs.next()){
%>
姓名:<%=rs.getString("name")%><br>
电话:<%=rs.getString("mobile")%><br>
<%}}catch(Exception e){} %>
</body>
</html>

第四步:测试

(0)

相关推荐

  • 用于App服务端的MySQL连接池(支持高并发)

    本文向大家介绍了简单的MySQL连接池,用于App服务端比较合适,分享给大家供大家参考,具体内容如下 /** * 连接池类 */ package com.junones.test; import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import com.mysql.jdbc.jdb

  • java配置dbcp连接池(数据库连接池)示例分享

    使用jar包:commons-dbcp-1.4.jar.commons-pool-1.6.jar.commons-logging-1.1.3.jar,另外还有数据库的jdbc驱动,适用java6及以上平台 连接池管理类 复制代码 代码如下: package cn.songxinqiang.samples.commonsdbcp.util; import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.SQL

  • .net数据库连接池配置技巧(默认值)

    以连接字符串关键字控制Connection Pool ConnectionString属性是SQLConnection 对象的一个属性,它支持一个连接串/值对,这个对是用于调整connection pool行为的.下表是ConnectionString 的值及解释. 名称 默认值 描述 Connection Lifetime 0 当连接返回pool时,它的时间和创建时间相比,如果它的存在时间超过了Connection Lifetime,它被释放.这对于新加入集群的服务器平衡是很有用的.值0可以保

  • .NET 数据库连接池

    则您需要负责打开 SqlConnection 对象,而且,更重要的是,在查询结束时关闭该对象.如果您忘记了进行关闭,孤立连接会迅速地积累起来.监视连接数 为了对孤立连接和发生溢出的连接池进行测试,我编写了一个 Web 窗体的示例应用程序.此应用程序使用的方法与您通常用于从查询返回数据的方法相同.(您可以在 http://www.sqlmag.com 上下载此代码的 WinForms 版本.) 我使用了清单 1 中的代码来打开和关闭到 Web 窗体应用程序的连接.标注 A 中的例程针对 110 个

  • 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; //数据库

  • Tomcat5+Mssql server 2000数据库连接池配置之旅

    Tomcat相信大家已经很熟悉了,作为一种免费而强大的java web server,得到了很多java爱好者的青睐,最新版本的tomcat5支持servlet2.4和jsp2.0,今天我将采用Tomcat5和Ms sqlserver 000一起来开始数据库连接池配置之旅.需要的准备1.jdk 我使用的版本1.4.012.Tomcat 5 我使用的是5.0.16版本 下载地址:http://jakarta.apache.org/site/binindex.cgi3.Mssql server 20

  • Python实现Mysql数据库连接池实例详解

    python连接Mysql数据库: Python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接MySQL数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响.因此,实际使用中,通常会使用数据库的连接池技术,来访问数据库达到资源复用的目的. 数据库连接池 python的数据库连接池包 DBUtils: DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装.D

  • python3 实现mysql数据库连接池的示例代码

    dbutils封装文件传送门 DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装.DBUtils来自Webware for Python. DBUtils提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接. PooledDB :提供线程间可共享的数据库连接,并自动管理连接. 需要库 1.DBUtils pip install DBUtils 2.pymysql pip install pymysql/MySQLdb

  • 基于C++实现Mysql数据库连接池实例

    目录 项目技术点 项目意义 项目实现 Connection设计 ConnectionPool设计 项目复杂接口细节刨析 项目技术点 C语言进行MYSQL数据库编程 无锁单例 基于STL队列加C++11新特性保证线程安全实现的生产者消费者模型 C++11多线程编程 (线程间同步与互斥) 基于CAS的原子整形 lambda表达式 shared_ptr智能指针管理Connection*指针对象 基于C++11标准库实现, 具备跨平台的特性,省去了对于pthread库的C++的封装.更加针对于项目的核心

  • centOS下mysql workbench安装配置教程

    本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mysql mysql-server mysql-libs mysql-server 关于mysql各个包的功能是: "mysqlfor the client tools,mysql-serverfor the server and associated tools, andmysql-libsfor t

  • Tomcat 5.5 数据库连接池配置

    Server.xml的修改我推荐使用Tomcat的Admin组件完成,完全图形化配置,相当容易.或者按下面的写法在< GlobalNamingResources>< /GlobalNamingResources>之间写如下配置(仅供参考,各位用的时候,请改成自己数据库的配置): 复制代码 代码如下: <Resource name="jdbc/mysql" type="javax.sql.DataSource" password=&quo

  • Java实现数据库连接池简易教程

    一.引言 池化技术在Java中应用的很广泛,简而论之,使用对象池存储某个实例数受限制的实例,开发者从对象池中获取实例,使用完之后再换回对象池,从而在一定程度上减少了系统频繁创建对象销毁对象的开销.Java线程池和数据库连接池就是典型的应用,但并非所有的对象都适合拿来池化,对于创建开销比较小的对象拿来池化反而会影响性能,因为维护对象池也需要一定的资源开销,对于创建开销较大,又频繁创建使用的对象,采用池化技术会极大提高性能. 业界有很多成熟的数据库连接池,比如C3P0,DBCP,Proxool以及阿

  • Python MySQL数据库连接池组件pymysqlpool详解

    引言 pymysqlpool (本地下载)是数据库工具包中新成员,目的是能提供一个实用的数据库连接池中间件,从而避免在应用中频繁地创建和释放数据库连接资源. 功能 连接池本身是线程安全的,可在多线程环境下使用,不必担心连接资源被多个线程共享的问题: 提供尽可能紧凑的接口用于数据库操作: 连接池的管理位于包内完成,客户端可以通过接口获取池中的连接资源(返回 pymysql.Connection): 将最大程度地与 dataobj 等兼容,便于使用: 连接池本身具备动态增加连接数的功能,即 max_

随机推荐