当前位置:  开发笔记 > 编程语言 > 正文

C#静态SQLConnection

如何解决《C#静态SQLConnection》经验,为你挑选了1个好方法。

我们应该在类中重用Static SqlConnection,还是更好地创建它的实例?

FactoryDB factory = 
    FactoryDB.GetInstance("sp_select_regional", TipoExecucao.StoredProcedure,
        "portal_sadiaConnectionString");

factory.AutoReset = true;

using (FactoryDB.Conn)
{
    factory.ParametersCount = 1;
    factory.Parameters[0] = 
        FactoryDB.CreateParameter(((IMarcas)Comentario).IDMarca, 
            'I', "@int_id_marca");

    factory.AddParameters();

    foreach (DataRow drFilial in factory.GetData().Rows)
    {
        Regionias filial = new Regionias()
        {
            IDRegional = Convert.ToInt32(drFilial["int_id_regional"]),
            TxtRegional = drFilial["txt_regional"].ToString()
        };

        lstRegional.Add(filial);
    }

    return lstRegional;
}

在此示例中,"using"使用FactoryDB类的静态SqlConnection,它使用SingleTon模式获取它的唯一实例.

我想知道使用Connection是否正确,如果想在DB中执行另一个查询,我需要将"FactoryDB.Conn"属性设置为NULL.



1> Jon Skeet..:

SqlConnection每次需要时创建一个新实例,并尽快处理它.底层连接池将能够管理物理连接.

如果您使用单个静态连接,如果您需要任何多线程,事情会变得非常复杂......

编辑:如果你将值设置为null,那么无论如何都会重新创建,有一个静态变量的好处是什么?只需使用局部变量:

using (SqlConnection connection = CreateConnection())
{
    ...
}

更简单,没有线程相互踩踏的风险.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有