c#資料庫連線池Hikari
Hikari是我自定義的資料庫連線池,前面已經提供了地址。因為c#的連線池按照規範的ADO.NET裡面實現定義的。由資料庫官方提供,但是實現方式就不知道了,反正沒有看出來,估計一般是連線類實現的,但是沒有看出來怎麼使用的。
對其升級重構:
重新設計快取池,消除鎖,使用安全棧,提升效能。所有的設定均採用狀態,只是在獲取的時間才真實關閉,同時根據配置,監視使用情況,部分解決外部使用失誤,沒有回收的情況。很多內容設定移動到快取池中設定,並且是使用時設定,真正關閉連線也是。
根據我們使用的習慣,自定義了一個數據庫連線池,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();//這裡是回收快取,否則就會長時間沒有連線可用,直到達到設定的使用時間
}