MySQL连接池
1.
using System;
using System.Collections;
using MySql.Data.MySqlClient; namespace Helper
{
/// <summary>
/// MySQL连接池
/// </summary>
public static class MySQLConnPool
{
//private static string connStr = "server=localhost;User ID=root;Password=qwer1234;database=test;";//连接字符串
private static ArrayList poolLs = new ArrayList();//连接池
private static int max = ;//连接池最大数量 /// <summary>
/// 获取连接对象
/// </summary>
/// <param name="connStr">数据库连接字符串</param>
/// <returns></returns>
public static MySqlConnection GetConn(string connStr)
{
lock (poolLs)
{
MySqlConnection retConn = null;//超出线程池大小限制时返回null
if (poolLs.Count > )
{
retConn = (MySqlConnection)poolLs[];//获取池中第一个
poolLs.RemoveAt();//从池中移除
}
else
{
retConn = new MySqlConnection(connStr);//连接池中没有连接,创建一个
retConn.Open();
}
return retConn;
}
} /// <summary>
/// 关闭连接或添加到连接池
/// </summary>
/// <param name="conn"></param>
public static void Close(MySqlConnection conn)
{
lock (poolLs)
{
if (poolLs.Count < max)//连接池只保留最大数量的连接
{
poolLs.Add(conn);//连接池数量小于限制,将连接添加到连接池
}
else
{
conn.Close();//线程池超出数量限制,关闭连接
}
}
}
}
}
连接池代码
2.
using System;
using System.Web.Mvc;
using System.Data;
using MySql.Data.MySqlClient;
using Helper; namespace MVC4.Controllers
{
public class testController : Controller
{
private static string connStr = "server=localhost;User ID=root;Password=12345678;database=test;";
public ActionResult Index()
{
MySqlConnection conn = MySQLConnPool.GetConn(connStr);
MySqlCommand cmd = new MySqlCommand("Select * from us_BaseInfo", conn);
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
}
dr.Close();//关闭MySqlDataReader
MySQLConnPool.Close(conn);
return View();
}
}
}
连接池使用
MySQL连接池的更多相关文章
- 解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。
解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题. (默认MySQL连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池. 所以系统发布第二天访问会 ...
- Java Mysql连接池配置和案例分析--超时异常和处理
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...
- tomcat中使用mysql连接池的配置
1.下载相应的jar包,添加到工程中 需要下载的包主要有commons-pool2-2.2 commons-dbcp2-2.0.1-src commons-dbcp2-2.0.1 commons-c ...
- mysql连接池的使用工具类代码示例
mysql连接池代码工具示例(scala): import java.sql.{Connection,PreparedStatement,ResultSet} import org.apache.co ...
- 用swoole简单实现MySQL连接池
MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再 ...
- 实现一个协程版mysql连接池
实现一个协程版的mysql连接池,该连接池支持自动创建最小连接数,自动检测mysql健康:基于swoole的chanel. 最近事情忙,心态也有点不积极.技术倒是没有落下,只是越来越不想写博客了.想到 ...
- mysql连接池模块
如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭.因为node里面的mysql不像php里的那样会在完成查询后断开,只要不主动断开,连接一 ...
- python中实现mysql连接池
python中实现mysql连接池 import pymysql from DBUtils.PooledDB import PooledDB MYSQL_HOST = 'localhost' USER ...
- workerman如何写mysql连接池
首先要了解为什么用连接池,连接池能为你解决什么问题 连接池主要的作用1.减少与数据服务器建立TCP连接三次握手及连接关闭四次挥手的开销,从而降低客户端和mysql服务端的负载,缩短请求响应时间2.减少 ...
随机推荐
- 【openGL】画圆
#include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> #include <math ...
- Grafana 安装
由于 Grafana 是存静态的,你只需要下载源代码解压,将它部署在 Nginx 上面就可以了,或者可以用 Python 的 SimpleHTTPServer 来跑 $ wget http://gra ...
- redmine安装部署
http://www.sxt.cn/u/4647/blog/5557 http://blog.chinaunix.net/uid-26729093-id-4669508.html http://my. ...
- IplImage, CvMat, Mat 的关系
IplImage, CvMat, Mat 的关系 转载来源:http://www.cnblogs.com/summerRQ/articles/2406109.html opencv中常见的与图像操作有 ...
- 【架构】MVP模型
MVP模型一般要创建三个文件夹:View.Interactor(Model).Presenter 每个部分都有其接口和实现类,就是为了方便回调 这里做一个登陆界面为例子: 接口: Interactor ...
- 使用JdbcTemplate报 Incorrect column count: expected 1, actual 5错误解决
Incorrect column count: expected 1, actual 5 在使用jdbc的querForObject queryForList的时候,出现Incorrect colum ...
- window系统查看端口被哪个进程占用了
C:\netstat -aon|findstr 8080TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448端口被进程号为2448的进程占用,继续执行下面命令:C:\ta ...
- SPOJ REPEATS 后缀数组
题目链接:http://www.spoj.com/problems/REPEATS/en/ 题意:首先定义了一个字符串的重复度.即一个字符串由一个子串重复k次构成.那么最大的k即是该字符串的重复度.现 ...
- SU suxcontour命令学习
- C#函数与SQL储存过程
一点点小认识作为memo,求指正. C#的函数与SQL的储存过程有很多的相似性, 它们都是一段封闭的代码块,来提高代码的重用性,虽然现在复制粘贴很方便,但是我们在写多个函数的时候频繁的复制粘贴相同的内 ...