powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему всегда возвращается Open?
5 сообщений из 5, страница 1 из 1
Почему всегда возвращается Open?
    #37958750
Ъыжсло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Истоки....
Программа при старте создает подключение к БД типа OledbConnection. Естесственно обрабатываются все исключения и прочее. Теперь делаем следующее: программа работает а мы вырубаем SQLServer например через службы (просто говорим ему стоп). Далее...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Function GetReis() As Generic.List(Of Reis)
        Dim retVal As New Generic.List(Of Reis)
        If _myApp.ConnectionServiceLocal.Connection IsNot Nothing AndAlso _myApp.ConnectionServiceLocal.Connection.State = ConnectionState.Open Then
            Dim ta As New Global.FC.dsReisTableAdapters.reisTableAdapter
            ta.Connection = _myApp.ConnectionServiceLocal.Connection
            Dim dt As New Global.FC.dsReis.reisDataTable
            ta.Fill(dt)
            For Each row As Global.FC.dsReis.reisRow In dt.Rows
                Dim desc As String = vbNullString
                Try
                    desc = IIf(IsDBNull(row("desc")), Nothing, row.desc)
                Catch ex As Exception
                    Debug.Print(ex.Message)
                End Try
                Dim itm As New Reis(row.id, row.crdt, row.naimen, desc, row.aviakom_id, row.marshrut_id, row.pv)
                retVal.Add(itm)
            Next
        End If
        Return retVal
    End Function



Процедура выполняется однако на ta.Fill(dt) получаем эксепшн.. Отсюда вопрос: как же проверять подключение? Как быть уверенным что оно (подключение) активно и запрос будет выполнен?
...
Рейтинг: 0 / 0
Почему всегда возвращается Open?
    #37958763
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ъыжсло, открывай соединение перед выполнением запроса, выполняй его и немедленно закрывай соединение. И почему ты используешь OleDbConnection вместо SqlConnection?
...
Рейтинг: 0 / 0
Почему всегда возвращается Open?
    #37958767
Ъыжсло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторИ почему ты используешь OleDbConnection вместо SqlConnection Тут все просто: программа работает не только с MSSQL но и с другими СУБД. автороткрывай соединение перед выполнением запроса, выполняй его и немедленно закрывай соединение Согласен. Но увы и ах... Переписать за выходные пару сотен тысяч строк кода... А потом выловить все возможные глюки...
...
Рейтинг: 0 / 0
Почему всегда возвращается Open?
    #37958828
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак быть уверенным что оно (подключение) активно и запрос будет выполнен?
Ъыжсло, таких гарантий вам и Путин не даст...
Учитывая все вами сказанное - попробуйте просто переписать проперть ConnectionServiceLocal.Connection , где и проверять соединение... и если оно живо (можно попытаться выполнить элементарный селект select 1 ну плюс ваши проверки) - возвращать его, а если нет - переоткрывать...
И вообще забавно... Вы хотите каких-то гарантий, но тогда зачем все эти проверки на nothing и state??? Похоже вам начхать... так-как эта ситуация не обрабатывается... Что-то мне подсказывакт, что можно выкинуть парусотен тысяч... и глюков станет меньше... И Вам повезло, что приложение трудится в один поток...
...
Рейтинг: 0 / 0
Почему всегда возвращается Open?
    #37959148
Ъыжсло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я кстати именно так и поступил. Вы невероятно догадливы... но к сожалению оно не трудится в один поток. Переписал класс Connection + сервисная функция которая в отдельном потоке проверяет соединение и если оно умерло пингует сервант. Методом выдергивания сетевого кабеля было проверено: программа пишет в базу если все ТРУ. иначе пишет в кэш (XML файл) и при появлении соединения - в базу. Возможно не слишком элегантно. Будем дорабатывать. Хотелось бы просто совет.
авторВы хотите каких-то гарантий, но тогда зачем все эти проверки на nothing и state???
Чтоб не вылетело с ошибкой чо...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему всегда возвращается Open?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]