Как заставить работать ASP.NET DataSet, когда соединение теряется? - PullRequest
0 голосов
/ 12 января 2011

Я сделал базовую программу, которая подключается и получает содержимое из таблицы через SQL, она работает нормально.Что я хочу это;когда соединение теряется через SQL Server или интернет-соединение, оно должно продолжать перечислять элементы, полученные до потери соединения, вместо того, чтобы выдавать «Ошибка проблемы соединения».

Код выглядит так:

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 ]

1 голос
/ 12 января 2011

То, что вы можете сделать, это сохранить ваш набор данных в сеансе: (извините, мой 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 не хранится набор данных (если он возвращает ноль).Вы можете хотеть быть немного умнее этого и просто хранить конкретную таблицу.Обратите внимание, что сессия может истечь, хотя, поэтому немного почитать об этом.Этого должно быть достаточно, чтобы направить вас в правильном направлении.

Примечание: если вы хотите что-то менее изменчивое, чем Session, вы можете вместо этого попробовать использовать Cache.

0 голосов
/ 12 января 2011

Я не уверен, что понимаю проблему здесь. Хотя я не являюсь программистом на VB, мне кажется, что после загрузки страницы он выполнит SQL-запрос, а затем обработает этот набор данных.

Если вы перезагрузите страницу, а соединение SQL не работает, вы получите сообщение об ошибке, которое вам нужно как-то обработать (не знаю, как работают исключения VB, но я уверен, что вы можете это выяснить).

Если вы, с другой стороны, имеете в виду, что вы хотите получить любые данные из запроса, который отключен в середине запроса - я бы сказал, что это довольно сложно и актуально только для больших запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...