Asp.net ajax更新面板共享数据库连接

时间:2008-11-16 04:29:22

标签: asp.net database ajax

我在更新面板中有一个下拉框和一个文字标签。在下拉列表的选择更改事件中,重新查询数据库并重新填充文字标记,然后调用UPdatePanel.Update()。

下面,有没有办法我可以避免每次创建一个新的Oledbconnection,因为这似乎很慢。我可以重复使用和存储:

  1. 数据源
  2. 页面中的连接。
  3. 如果是这样,我如何在从GUI到服务器的调用之间保持这种状态?这是我在下面的选择更改代码

    protected void cboPeople_SelectedIndexChanged(object sender, EventArgs e)
    {
        string dataSource = ConfigurationSettings.AppSettings["contactsDB"];
        var objConn = new OleDbConnection(dataSource);
        string id = People[cboPeople.Text];
        UpdateLiteral(objConn, id);
    }
    

2 个答案:

答案 0 :(得分:1)

使用.NET不是一个好主意,让你的连接比需要更长久。好的做法是在它周围放置一个using语句(所以它总是得到清理):

string dataSource = ConfigurationSettings.AppSettings["contactsDB"];
using(var objConn = new OleDbConnection(dataSource))
{
    string id = People[cboPeople.Text];
    UpdateLiteral(objConn, id);
}

.NET使用connection pooling,这意味着当您关闭/处置连接时,它实际上并不关闭连接,而是将其重置并将其添加回池中。下次需要连接时,将从池中使用它。所以开销并不像你想象的那么多,而且速度也不慢。实际上,只要一次只需要一个连接,你就会发现它将使用相同的连接。

保持连接打开的危险在于它们永远不会被关闭,并且在高需求的情况下,你的连接已经耗尽。

答案 1 :(得分:0)

您需要为每个请求重新创建此项。你有一个状态较少的服务器。你永远不知道你的客户何时或是否会回电。您不希望保持与数据库的开放连接,也不能在维护一个数据库连接的情况下简单地为多个客户端提供服务。

  

部署高性能   应用程序,您必须使用连接   池。当您使用.NET时   OLE DB的框架数据提供程序,   您不必启用连接   汇集因为提供商管理   这是自动的。更多   有关如何使用的信息   与.NET的连接池   OLE DB的框架数据提供程序,   请参阅OLE DB,ODBC和Oracle   连接池(ADO.NET)。   来自OleDbConnection Class