mysql数据库连接_mysql数据库连接池配置教程

在与数据库进行连接的时候,会牵扯到数据库连接池的配置,本文将详细介绍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()){

%>

姓名:

电话:

第四步:测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2006年4月全国计算机等级考试二级Java语言程序设计

(考试时间90分钟,满分100分) 一、选择题((1)~(35)每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中&am…

asp.net web api中的版本管理

应用是演进的,通常我们用版本号来管理。api也是演进的,这篇博文就说说asp.net web api演进时的版本管理。asp.net web api的版本管理是通过微软的一个包来实现的。Install-Package Microsoft.AspNetCore.Mvc.Versioning通过url参数: api/order/api-versi…

初二物理模型有哪些_初二是成绩下滑的高危期,做好这5点成绩涨涨涨!(附全学科提升技巧,家长转给孩子!)...

原标题:初二是成绩下滑的高危期,做好这5点成绩涨涨涨!(附全学科提升技巧,家长转给孩子!)又到了每周五【学习经验分享】的时候了。今天小于老师分享的是初二关键时期可能会出现的问题,以及全科提升技巧。我们…

14个你可能不知道的JavaScript调试技巧

以更快的速度和更高的效率来调试JavaScript 熟悉工具可以让工具在工作中发挥出更大的作用。尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug。 文中已经列出了14个你可能不知道的调试技巧,但是可…

mysql校对规则_MYSQL校对规则

一、前言有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录;有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新了&#xff1…

基于NHibernate的留言本

留言本环境:access2003 vs2005 整个留言本的类视图: 1.新建一个空的解决方案 NHibernateMessage 依次建立项目Model,DAL,BLL,Command四个项目 2.Model项目处理 删除自动生成的class1.cs文件,新建message.cs文件其代码如下 Codeusing System;…

腾讯招.NET要求以下几点,你准备好了吗?

今天是大年初七,上班第一天,你在关注什么?2021年跳槽季可能是近10年来最火爆的跳槽季,各HR都在摩拳擦掌,新的征程已开始,.NET开发者们,也该行动起来了!上图是腾讯的.NET Core招聘标准…

python设置字符间距_python字符串处理以及字符串格式化

一、python字符串处理目录:1.算长度(len),某个元素出现的次数(count)2.切片 [ ],repr:把不可见字符显示出来3.查找 #find,rfind从右边查找4.字符串和列表之间的转换(split,join list)5.替换字符串replace #替换会生成新的字符串,原来的字符串不变6.类型转换7.编…

不得了,日本出版社竟是这样吸引死宅学编程的

此前日本出版社“翔泳社”推出 IT 专业用语拟人化的 IT 说明书,将书中相关名词用萌妹子来表现,并对其性格等方面进行了设定。 比如 HTTP 酱由于在互联网上应用最为广泛,经常与大家见面,因此被设计成了偶像。她与其它协议有着很好的…

mysql表空间权限_MySQL InnoDB表空间加密示例详解

前言从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加密,加密用的是AES算法,而其解密是在从…

Dapr 正式发布 1.0

年前我写了一篇博客《Dapr 已在塔架就位 将发射新一代微服务》, 今天Dapr 正式发布了1.0 :Dapr Runtime v1.0.0Dapr dotnet SDK v1.0.0随着Dapr 发布1.0 版本, .NET团队编写的《Dapr for .NET Developers》:https://github.com/do…

帮助别人是一种快乐!

帮助人是一种快乐!忽然之间想起的这种话题。其实,还是缘于最近看的一篇商界人物的文章《杨卓舒》其实,这些字眼一直都在我们的眼帘前晃荡,更多的人只是顿悟而已,也许还有人帮助过一次,获得了一次短暂的快乐…

python中x 1什么意思_Python:A [1:]中x的含义是什么?

这是array slice语法.看到这个问题:Explain Python’s slice notation对于列表my_list对象,例如[1,2,“foo”,“bar”],my_list [1:]相当于从0索引1开始的所有元素的浅复制列表:[2,“foo”,“bar”].所以你的for语句遍历这些对象:…

100 万在中国不同地方能活多久?

最近,一张名为 “100 万在中国各省能生活多久?” 的图片在网上流传 话不多说,往下看 没错,就是正如你们看到的 天朝大北京 以“100万能活19年9个月”的 成绩排名“倒数第一” 图片一出 数据君虎口一震 顿时一声惊叫 统计按“年人均…

JAVA跟MYSQL数据库交互_【编写Java程序实现与Mysql数据库的连接,并交互性的实现简单查询,删除,修改,排序,显示等操作】...

目前博主只实现了查询和插入,而且还不太会在面板对数据库语句进行更新,写完再看感觉语言有些冗杂,往后再更,大半夜写这个也是醉了呢。import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListe…

重磅:.NET 6 发布首个预览版

前言2021 年 2 月 17 日微软发布了 .NET 6 的 Preview 1 版本,那么来看看都有什么新特性和改进吧,由于内容太多了因此只介绍一些较为重点的项目。ASP.NET Core 6 Preview 1 和 EF Core 6 Preview 1 同样有很多的更新内容,但是限于篇幅就不在这…

热键与快捷键

热键及快捷键(GtkAccelGroup) 热键:一般是字母带下划线.在当前控件内(如打开的菜单)可以用alt字母来代替点击的功能快捷键:一般指,在本窗口任何位置内,按某组合键,都可以代替点击的功能.:) 如果你的理解与我的有冲突,请以我的理解为准!试举例证:#include #include const char *…

python服务器qt客户端_python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例...

本文在上文的基础上重新实现支持多线程的服务器。以下为TCP客户端的程序代码:#!/usr/bin/env python3import sysfrom PyQt5.QtCore import (QByteArray, QDataStream, QDate, QIODevice,QRegExp, Qt)from PyQt5.QtWidgets import (QApplication, QDateEdit, QFrame,…

巧合?模仿还是抄袭?水木年华的《秋日恋歌》和Lube 乐队的《Pozovi Menya Tiho Po Imeni》...

今天听到了俄罗斯的Lube 乐队的《Pozovi Menya Tiho Po Imeni》,前奏感觉很好熟悉,继续听,有种似曾相识的感觉,曲风和演唱风格都很熟悉,我极力的回忆,依稀想起水木年华有一首《莫斯科的黄昏》的演唱风格是在…

UOS简单评测

一位网友安装了UOS系统,并录制了视频,这位网友告知,UOS使用中无卡顿,比较流畅。以下为机器的硬件配置。就操作系统最关键的软件生态而言,UOS自带40多款原创应用和一个有2000多款优质应用的商店,包括微信、Q…