因為使用習慣的問題,我封裝了一個數據庫連接池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();//這里是回收緩存,否則就會長時間沒有連接可用,直到達到設置的使用時間
}