【问题标题】:Close SQLDataSource Connection关闭 SQLDataSource 连接
【发布时间】:2009-12-16 16:57:52
【问题描述】:

我使用GridView.DataBind()SQLDataSource 绑定到GridView,这些查询通常需要很长时间才能执行。

什么代码可以取消正在进行的DataBind()

我似乎找不到任何方法来停止DataBind() 甚至关闭数据库连接。

重新绑定尝试:

myConn.ConnectionsString = ""
myConn.SelectCommand = ""
myGrid.DataSource = Nothing
myGrid.DataBind()

处理尝试

myConn.Dispose()
myGrid.Dispose()

这两次尝试都没有真正关闭连接。 Oracle 仍表示它仍处于连接状态并正在执行查询。

【问题讨论】:

    标签: asp.net data-binding gridview oracle9i


    【解决方案1】:

    如何从不同的方向解决问题。您是否考虑过通过更改联接和子查询来优化查询,或者只是通过提取更少的数据(可能基于页面上的其他输入)?

    【讨论】:

      【解决方案2】:

      您可以手动绑定 GridView,这将允许您在绑定过程中插入逻辑以允许您退出该过程。

      为此,请订阅 GridView 的 onDataBinding 事件。

      您可以在此处阅读有关手动绑定 GridView 的更多信息:http://www.aarongoldenthal.com/post/2009/04/19/Manually-Databinding-a-GridView.aspx

      【讨论】:

      • 详细说明“插入逻辑......以退出该过程”。我想停止 DataBind,关闭 DB 连接,从而终止对 DB 的查询。
      • 我的意思是不要使用 SQLDataSource 中的 SelectCommand 来自动填充您的 GridView,您可以编写自己的逻辑来填充 GridView。因此,在您注册为 GridView 调用 onDataBinding 的函数中,您可以查询数据库并开始将值插入到 GridView 中。这是一项相当大量的工作,因为您实际上是在重新发明轮子,但它允许您随时停止进程、关闭连接,甚至向用户提供反馈。这有帮助吗?
      • 如何关闭连接?我找不到那个方法。
      • 好吧,我假设你在这个代码隐藏函数中打开了连接,这意味着你只需要在你的连接对象上调用 .Close() 函数。
      • 在我的代码和您提供的示例页面上都没有明确的打开/关闭调用。在 ASP XML 代码中,我将 GridView 的 DataSourceID 设置为 SQLDataSource。我的 page_load() 事件处理程序只是调用 DataBind 并格式化 GridView。
      【解决方案3】:

      我同意 Dave 的观点,尽管我建议在这种情况下进行分页。有很多变化,但我在这里的第一种方法是将一次拉回的行数限制为特定数字。尝试建立连接,然后在它没有及时响应时断开它只会让您的应用程序用户感到沮丧。

      这里有一篇文章可能会帮助您入门。

      smart paging with datagrid

      【讨论】:

        【解决方案4】:

        使用{} 块适合这种情况。通过 using 块使用您的连接

        【讨论】:

          【解决方案5】:

          只需关闭连接并释放所有资源。

          myConn.Close();
          myConn.Dispose();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-07-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-31
            • 2019-01-04
            相关资源
            最近更新 更多