1. 程式人生 > >c#資料庫連線池Hikari

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();//這裡是回收快取,否則就會長時間沒有連線可用,直到達到設定的使用時間
                    }