c#數據庫連接池


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM