C#学习(五)——SqlClient连接Sql Server数据库,读取配置文件并创建数据库连接池

        本文部分参考链接:https://www.cnblogs.com/eaglet/archive/2011/10/31/2230197.html

        C#中连接数据库有很多种方法,这里介绍一下SqlClient连接数据库,用来连接Sql Server数据库。

        这里通过配置文件来获取配置信息,在项目中右键,选择添加,然后选择新建项,再选择应用程序配置文件,即可生成App.config文件,配置文件信息如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name ="connstr"
            connectionString="SERVER=连接服务器地址;INTEGRATED SECURITY=验证方式;
            INITIAL CATALOG=数据库名称;MAX POLL SIZE=10(最大连接数);
            MIN POOL SIZE=5(最小连接数);CONNECT TIMEOUT=15(设置连接等待时间;
            ASYNCHRONOUS PROCESSING=TRUE(异步访问数据库);"/>
    </connectionStrings>
</configuration>

       读取配置文件使用:

public static string connstr = ConfigurationManager.ConnectionStrings["connstr"].ToString();

       完整的打开数据库并读取数据代码:

//读取配置文件
public static string connstr = ConfigurationManager.ConnectionStrings["connstr"].ToString();
//打开连接
using(SqlConnection conn = new SqlConnection (connstr))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("这里填写sql语句",conn);
    SqlDataReader sdr = null;
    sdr = cmd .ExecuteReader();     
    //执行命令对象,并用sdr指向结果集的第一条记录。
    while(sdr.Read())
    {              
        Consloe.WriteLine(sdr[0].ToString());        
    }
    sdr.Close(); 
}

        在C#的SqlClient中,数据库连接池默认是打开的,即配置文件中只需要配置连接服务器地址,数据库名称,连接验证方式即可,此时便是使用的数据库连接池。而需要关闭的化,需要在配置文件中增加POOLING=FALSE。

        在这个数据库连接池中,第一次建立连接的时候,客户端需要与服务器端建立连接,即需要进行握手操作,解析字符串,授权。检查约束等,这个比较耗时。而在连接好之后,两端就建立了物理连接,这时候,其实如果调用SqlConnection.Close()并不会马上释放掉物理连接,其实就类似于将此时的连接对象放在一个List里面保存起来一样。而连接池其实有一个超时时间,默认情况在10分钟,如果在10分钟内,没有任何的连接操作,那么物理连接就会被关闭。如果需要一直保持物理连接的化,就需要设置最小连接数,即MIN POOL SIZE = 5。

        很多时候,可能会使用到多线程进行数据库的操作,其实这时候,数据库连接池很有意思。比如现在有两个线程,二线程在一线程调用Close之前调用Open,此时,数据库连接池会给第二个线程分配一个新的物理连接;如果二线程在一线程调用Close之后调用Open,那么,此时不会再分配新的物理连接,接着用一线程的物理连接。假设现在有N条线程,最坏的情况下,需要N条物理连接,最好的情况就是只需要1条物理连接。

        根据以上分析,如果我们需要做高并发的应用,就尽量将MINPOOL SIZE设置大一点,但也不是说无限大,毕竟一台pc机的TCP连接是有上限的。

发布了165 篇原创文章 · 获赞 41 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_41061437/article/details/97006505
今日推荐