博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#数据库连接池
阅读量:5104 次
发布时间:2019-06-13

本文共 1130 字,大约阅读时间需要 3 分钟。

因为使用习惯的问题,我封装了一个数据库连接池Hikari,这是我自定义的数据库连接池。因为c#的连接池按照规范的ADO.NET里面实现定义的,由数据库官方提供,但是实现方式就不知道了,反正没有看出来,估计一般是连接类实现的,但是没有看出来怎么使用的。

项目地址:

https://github.com/jinyuttt/Hikari.git

对其升级重构:

重新设计缓存池,消除锁,使用安全栈,提升性能。所有的设置均采用状态,只是在获取的时间才真实关闭,同时根据配置,监视使用情况,部分解决外部使用失误,没有回收的情况。很多内容设置移动到缓存池中设置,并且是使用时设置,真正关闭连接也是。

  根据我们使用的习惯,自定义了一个数据库连接池,HikariDataSource作为对外的类,提供连接对象,其实是自己定义的。HikariConfig类是配置类,支持文件配置加载,配置文件只要是文本就可以了。其实HikariDataSource继承了HikariConfig,所以从使用上,HikariDataSource类可以支持设置或者加载配置,但是我不建议,我推荐的用法是:

HikariConfig hikariConfig = new HikariConfig();

hikariConfig.LoadConfig("Hikari.txt");
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);

使用

var connection = hikariDataSource.GetConnection();
if (connection != null)
                    {
                        var cmd = connection.CreateCommand();
                        cmd.CommandText = "select * from student";
                        var rd = cmd.ExecuteReader();
                        int datanum = 0;
                        string data = "";
                        while (rd.Read())
                        {
                            data+="ID:"+rd.GetInt32(0);
                            data+=",Name:"+ rd.GetString(1);
                            Console.WriteLine(data);
                            datanum++;
                        }
                        rd.Close();
                        cmd.Dispose();
                        connection.Close();//这里是回收缓存,否则就会长时间没有连接可用,直到达到设置的使用时间
                    }

转载于:https://www.cnblogs.com/jinyu20180311/p/10117005.html

你可能感兴趣的文章
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>