连接丢失时如何获得工作ASP.NET DataSet?

时间:2011-01-12 08:21:51

标签: asp.net vb.net dataset

我制作了一个基本程序,通过SQL连接并从表中获取内容,它正常工作。我想要的是;当连接通过SQL Server或Internet连接丢失时,它必须继续列出在连接丢失之前获得的项目,而不是给出“连接问题错误”。

代码是这样的:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim strSQL As String
    Dim conn As New SqlConnection
    conn.ConnectionString = baglan()
    conn.Open()
    strSQL = "SELECT * FROM Telefon_Otomasyon"
    Dim da As New SqlDataAdapter(strSQL, conn)
    Dim dset As New DataSet()
    da.Fill(dset, "Telefon_Otomasyon")
    Dim Hepsi As DataRow
    For Each Hepsi In dset.Tables("Telefon_Otomasyon").Rows
        Response.Write(Hepsi("Arayan") & "<br />")
    Next
End Sub

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以做的是将你的数据集存储在Session中:(原谅我的VB,我很生气)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim strSQL As String
    Dim conn As New SqlConnection
    conn.ConnectionString = baglan()
    conn.Open()
    strSQL = "SELECT * FROM Telefon_Otomasyon"
    Dim da As New SqlDataAdapter(strSQL, conn)
    Dim dset As New DataSet()

    Try
        da.Fill(dset, "Telefon_Otomasyon")
        MyDataset = dset
    Catch ex As SqlException
        dset = MyDataset
    End Try

    Dim Hepsi As DataRow
    For Each Hepsi In dset.Tables("Telefon_Otomasyon").Rows
        Response.Write(Hepsi("Arayan") & "<br />")
    Next
End Sub

Private Property MyDataset() As DataSet
    Get
        return Session("myDataset")
    End Get
    Set(ByVal value as DataSet)
        Session("myDataset") = value
    End Set
End Property

这也是一个非常基本的例子,在生产代码中使用它之前需要对其进行整理,即如果Session中没有存储数据集,则需要考虑如何处理(如果它返回null)。您可能希望比这更聪明,只需存储特定的表。请注意,Session可能会过期,因此请对其进行一些阅读。这应该足以引导你朝着正确的方向前进。

进一步注意:如果你想要一些比Session更不易变化的东西,那么你可以尝试使用Cache。

答案 1 :(得分:0)

我不确定我在这里理解这个问题。虽然我不是VB程序员,但在我看来,一旦页面加载,它将运行SQL查询然后处理该数据集。

如果您重新加载页面并且SQL连接不起作用,您将收到一个错误,您需要以某种方式处理(不确定VB异常是如何工作的,但我确定您可以确定那个)。

另一方面,如果您希望从查询中断查询中获取任何数据,我会说这很难,只与大量查询相关。