相关疑难解决方法(0)

SqlConnection和Pool,保持一个开放的连接kung-foo或foo-bar?

我以为我很聪明.但鉴于最近的发现,我不再那么肯定了.在页面生命周期中,可以通过任意数量的数据库交互.一些背靠背,其他人分散开来.所以我发明了一个对象,它在HttpContext.Items字典中保持SQL连接的实例.然后每个db请求都使用此连接,当http请求结束时,我正确处理了连接.我们正在看几百毫秒的连接将被打开,并且有一些沉重的http缓存,可用连接的耗尽并不是一个问题.

关键是要防止因建立新连接而增加往返次数.但是当我偶然发现连接池的知识时,我认为它很有效地保留了SqlConnection的有用性.或者是吗?

情景A是否与情景B相同,表现明智吗?你会推荐哪个?方案B是否没有提供性能提升,甚至可能因为某些边缘情况而无法正常处理?请原谅示例中的假性,我不想用barf将它们弄得乱七八糟.

一个

using (var connection = new SqlConnection(connectionString))
{
   using (var command = new SqlCommand("...", connection))
   {
      ... doing database stuff ...
   }
}

... traversing the stack ...

using (var connection = new SqlConnection(connectionString))
{
   using (var command = new SqlCommand("...", connection))
   {
      ... doing database stuff ...
   }
}
Run Code Online (Sandbox Code Playgroud)

   var connectionKeeper = new ConnectionKeeper();

   // Add to the context items so it can be used anywhere
   Context.Items.Add("Connection", connectionKeeper);

   ... traversing the stack ...

   using (var …
Run Code Online (Sandbox Code Playgroud)

.net c# sql

4
推荐指数
1
解决办法
4242
查看次数

Asp.Net:从一个类中返回一个读者

我只是想知道从课堂上找回读者的正确方法?

我的代码可以使用,但我不确定这是否正确.

也.我无法关闭我的类方法中的连接,仍然可以从我的ascx页面访问它,是

那好吗?

//在我的班级中,我有以下方法来返回记录/阅读器 - 在这种情况下它是一条记录.

public SqlDataReader GetPost()
    {
        SqlConnection conn = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("con_spPost", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@blogid", blogid);
        try
        {
            conn.Open();
            return cmd.ExecuteReader();
        }
        finally
        {
          //  conn.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

//然后我在ascx页面中调用GetPost方法,如下所示:

protected void Page_Load(object sender, EventArgs e)
{

    //instantiate our class
    MyClass DB = new MyClass();

    //pass in the id of the post we want to view
    DB.PostID = Int32.Parse(Request.QueryString["p"]);

    ///call our GetPost method
    SqlDataReader reader = DB.GetPost();

   //output the result …
Run Code Online (Sandbox Code Playgroud)

asp.net ado.net encapsulation data-access-layer class

3
推荐指数
2
解决办法
784
查看次数

标签 统计

.net ×1

ado.net ×1

asp.net ×1

c# ×1

class ×1

data-access-layer ×1

encapsulation ×1

sql ×1