Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.01.2017
Сообщений: 7
1

Прелоадер, на время отработки запроса

11.07.2017, 12:38. Показов 1242. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
У меня есть в БД таблица из неё выдёргиваю документ например *.doc (данные хранятся в поле с типом varbinary(max))

C#
1
2
3
sqlCommand.CommandText = "SELECT Document FROM [Documents] WHERE 
IdDocuments=@idDoc";
sqlCommand.Parameters.Add("@idDoc", SqlDbType.Int);
Дальше делаю так
C#
1
2
3
4
sqlCommand.CommandTimeout = 120; 
if (sconn.State != ConnectionState.Open) sconn.Open(); 
fileByteArray = (byte[])sqlCommand.ExecuteScalar(); 
System.IO.MemoryStream mStream = new System.IO.MemoryStream(fileByteArray);
Как мне добавить прелоадер на время отработки запроса?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2017, 12:38
Ответы с готовыми решениями:

Скорость отработки запроса в TOAD и TOraQuery
Всем привет. Никто не сталкивался с такой проблемой что один и тот же SQL-запрос отрабатывает...

Как определить минимальное необходимое время для отработки запускаемого bat файла функцией ShellExecute()?
Всем привет! Столкнулся недавно с интересной проблемой. Есть код на Delphi7: // запускаем...

Вернуть курсор в ячейку ниже последнего введенного номера после отработки макроса, который фиксирует дату и время
Братья по разному, помогите. Задача следующая: Ежедневно поступают заявки на заезд до 100...

Время запроса
Добрый день! Не могу найти причину, почему проверка is null увеличивает время запроса в 10 раз?

5
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
11.07.2017, 12:47 2
ElVencedor, булевая переменная до начала и в конце она false.
Таймер проверят переменную, пока true работает gif-ка например
0
654 / 591 / 171
Регистрация: 17.07.2012
Сообщений: 1,680
Записей в блоге: 1
11.07.2017, 12:47 3
ElVencedor, выполнять запрос асинхронно, для начала
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
11.07.2017, 12:48 4
Это может быть и не тривиальная задачка, в общем-то.
Нужна форма/контрол, который станет в последствии прелоадером.
На закрытие прелоадера нужно повесить хендлер, при срабатывании которого пошлется сигнал в задачу, типа CancelationToken, который и убьет задачу запроса. Запрос нужно переделывать таким образом, чтобы он периодически проверял этот токен на срабатывание и отрабатывал финальную часть, а не просто внаглую обрывал соединение, так как на стороне БД может быть запущена транзакция, и она должна либо завершиться либо заролбечиться. Так что тривиально эту задачу точно не решить.
Разве что нужно простое окошко, в котором будет прогрессбар бегать туда-сюда. Тогда просто запускаете окошко, после этого формучку-прелоадер, и ждете когда задача завершится (появится результат например, или управление вернется, или каким-то резет ивентом) - после этого убираете окошко, и всё.
0
654 / 591 / 171
Регистрация: 17.07.2012
Сообщений: 1,680
Записей в блоге: 1
11.07.2017, 12:57 5
Цитата Сообщение от hoolygan Посмотреть сообщение
Это может быть и не тривиальная задачка, в общем-то.
Нужна форма/контрол, который станет в последствии прелоадером.
На закрытие прелоадера нужно повесить хендлер, при срабатывании которого пошлется сигнал в задачу, типа CancelationToken, который и убьет задачу запроса. Запрос нужно переделывать таким образом, чтобы он периодически проверял этот токен на срабатывание и отрабатывал финальную часть, а не просто внаглую обрывал соединение, так как на стороне БД может быть запущена транзакция, и она должна либо завершиться либо заролбечиться. Так что тривиально эту задачу точно не решить.
Разве что нужно простое окошко, в котором будет прогрессбар бегать туда-сюда. Тогда просто запускаете окошко, после этого формучку-прелоадер, и ждете когда задача завершится (появится результат например, или управление вернется, или каким-то резет ивентом) - после этого убираете окошко, и всё.
Вы явно перемудрили. Задача автора решается асинхронным обработчиком + 2 строчки кода, на показать/скрыть форму с прогрессбаром/спиннером.
Цитата Сообщение от hoolygan Посмотреть сообщение
так как на стороне БД может быть запущена транзакция, и она должна либо завершиться либо заролбечиться.
Транзакция по определению либо завершится, либо нет. И автору об этом думать не нужно. Да и вообще, о какой транзакции идет речь?
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
11.07.2017, 13:05 6
Cupko, ну я решил вообще поразмышлять о универсальном методе. Мало ли, может ТС для "вброса" кинул 1 select, а на самом деле ему нужно в проект добавлять какой-то Wait Control. И вспомнилось мне, как я с ним игрался
А про транзакции - то я перепутал commit с завершением. Тупанул, когда писал. Мало ли, сегодня у него 1селект, а завтра целая хранимка на тысячи строк с десятком временных табличек и кучей if-ов ))
Так что мой пост прошу считать как мысли вслух
0
11.07.2017, 13:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2017, 13:05
Помогаю со студенческими работами здесь

Время запроса к БД
В таблице 13 тыс. записей id - primary key mass - русские слова (индекса нет) Запрос: $start...

Ошибка во время запроса
Здравствуйте! Скажите почему стала появляться ошибка. Раньше все норм работало.

Переполнение во время запроса
надо собрать все данные в одну таблицу sql, но в одной таблице не получается собрать данные, пишет...

Время выполнения запроса
Работаю с MSSQL. Выполняю параметрический запрос. В 1-ый раз время выполнения запроса - 17 сек....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru