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()){
%>
姓名:
电话:
第四步:测试
mysql数据库连接_mysql数据库连接池配置教程相关推荐
- mysql 5.7.11 安装教程,MySQL数据库之mysql 5.7.11 安装配置教程
本文主要向大家介绍了MySQL数据库之mysql 5.7.11 安装配置教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 六步轻松搞定mysql5.7.11的安装 1.下载安 ...
- Springboot应用中线程池配置教程(2021版)
前言:日常开发中我们常用ThreadPoolExecutor提供的线程池服务帮我们管理线程,在Springboot中更是提供了@Async注解来简化业务逻辑提交到线程池中执行的过程.由于Springb ...
- python连接数据库mysql失败_mysql数据库连接失败是什么原因
原因一:登录账号.密码.服务器名称.数据库名称登录错误导致不能连接,这个比较常见,仔细检查好所填信息是否正确,填写正确一 般就可以解决. 解决方法:当正在使用的软件出现数据库不能连接时,一般就是服务器 ...
- 织梦 mysql 配置文件_MySQL集群配置
一.介绍 ======== 这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的MySQL集 ...
- atlas mysql怎么连接_Atlas安装配置教程 Atlas怎么安装配置
#sql-log-slow = 10 #实例名称,用于同一台机器上多个Atlas实例间的区分 #instance = test #Atlas监听的工作接口IP和端口 proxy-address = 0 ...
- 【MySQL】绿色版下载配置教程(Windows)
文章目录 下载MySQL压缩包 1 创建my.ini文件 2 配置mysql环境变量 3 在终端执行命令 下载MySQL压缩包 https://dev.mysql.com/downloads/mysq ...
- Mac系统下MySQL的下载安装和配置教程
版本说明 MySQL版本:5.7.23 系统版本:macOS High Sierra 10.13.6 MySQL 没有 6 和 7 这两个大版本,是直接从 5 跳到 8 的 当我们的 MySQL 的版 ...
- mysql绿色版安装、配置教程
1.下载路径 http://dev.mysql.com/downloads/mysql/ 2.配置: 也就是my.ini文件的由来. 把my-default.ini这个文件复制一下重命名my.ini ...
- mysql.open()_MySQL的open_file_limit配置迷雾
导读: 作者: 魏新平, 知数堂第5期MySQL实战班学员,第10期MySQL优化班学员,现任职助教 . 一想到你在关注我就忍不住有点紧张 一.官方解释 mysqld进程能使用的最大文件描述符数量,m ...
最新文章
- 2.2元组介绍+字符串操作
- 目标跟踪之camshift---opencv中meanshift和camshift例子的应用
- android四大组件 简书,android四大组件
- POJ 3159 Candies
- js倒计时,距离某个时间的倒计时。
- 对 精致码农大佬 说的 Task.Run 会存在 内存泄漏 的思考
- 视频监控中的光端机是干什么用的?
- 人工智能和计算机软件,人工智能在计算机软件方面有什么应用?
- 牛顿插值--python实现
- 信息学奥赛一本通 1344:【例4-4】最小花费 | 洛谷 P1576 最小花费
- github上markdown文件编写笔记
- mysql 个版本区别_MySQL版本区别及选择
- 计算机网络中如何看别人的共享文件夹,教大家如何使用网络共享文件夹和手机如何使用电脑端查看网络共享-共享文件夹...
- 凸集学习——理解凸集概念、凸包演示
- 【基于Python+tkinter的音乐播放器开发-哔哩哔哩】 https://b23.tv/eG2TwOL
- 前端白屏问题_H5白屏问题
- 用计算机弹出美妙的歌,计算器弹音乐 大家给点流行歌乐谱吧,谢谢大家
- 使用Guava的RateLimiter做限流
- GPG生成密钥对(Windows)及应用
- 如何利用计算机进行数制转换,如何教授计算机基础中的数制转换内容
热门文章
- ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截)
- 【广州/深圳 活动】 MVP社区巡讲
- 基于轻量型Web服务器Raspkate的RESTful API的实现
- C语言试题十一之计算并输出下列多项式值:sn=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)1/2n).
- Android之安卓8.0版本以上手机开启热点提示Caller already has an active LocalOnlyHotspot request
- linux shell之字符串的比较
- Android之adb jdwp获取debug版本app的进程Id
- C++之namespace和::使用总结
- amap vueamap 与_在vue中使用高德地图vue-amap
- 浙大计算机系可以转专业吗,求教。。浙大转专业容易吗