因为使用习惯的问题,我封装了一个数据库连接池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();//这里是回收缓存,否则就会长时间没有连接可用,直到达到设置的使用时间 }