繁体   English   中英

SqlConnection对象转换为ASP.NET SessionState对象

[英]SqlConnection object into ASP.NET SessionState object

我只是想知道我是否这样做:

Session["MyDbConnection"] = new SqlConnection("connectionString");
(Session["MyDbConnection"] as SqlConnection).Open();

当我导航到另一个页面时,我也可以这样做吗?:

(Session["MyDbConnection"] as SqlConnection).Close();

我不确定这是否可行,但是即使可行,这也是一个坏主意。 SqlConnection是一个IDisposable ,仅应在using语句内用作局部变量。
处置后,它将自动关闭并且可以使用连接池。
请注意Microsoft docs上“ SQL Server连接池”页面中的以下段落:

警告
强烈建议您在使用完连接后始终关闭该连接,以便将连接返回到池中。 为此,您可以使用任一CloseDispose的方法Connection对象,或打开所有连接的内部using的语句在C#中,或Using Visual Basic中的语句。 未显式关闭的连接可能不会添加或返回到池中。

使用SqlConnection的正确方法是:

using(var con = new SqlConnection(connectionString))
{
    using(var cmd = new SqlCommand(commandText, con)
    {
        // Add parameters if needed: 
        // cmd.Parameters.Add("name", SqlDbType.<some SqlDbType Member>).Value = <some value>
        // Execute your command here and do whatever you need with it.
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM