Управление таблицей данных - PullRequest
3 голосов
/ 22 февраля 2011

Мне нужно написать программное обеспечение, которое обрабатывает данные из базы данных SQL.

Таблицы могут быть огромными (> 500 000 строк).

Я должен управлять отображением через таблицу, которая должнаиспользоваться для отображения следующих строк, над строками, перемещения в начало и конец.

ADO с его Recordset может легко это сделать с помощью методов MoveNext, MoveFirst, MovePrevious и MoveLast.

Проблема в том, что я нахожу это немного медленным.Кроме того, для записи (вставка, удаление, обновление) я уже использую ADO.NET.

В ADO.NET мы не можем обработать реальный курсор.Единственный доступный (через DataReader) курсор только вперед.

Я тоже не могу загрузить набор данных, потому что это занимает много времени и памяти.

Мой вопрос: знает ли кто-нибудь решение для обработкиэтот вид таблицы с ADO.NET?

Это настольное приложение, точнее ERP.

Редактировать:

Я пыталсяреализовать систему подкачки, она работает довольно хорошо.Тем не менее, результаты приложений ERP никогда не сортируются по id, я понимаю, что с системой подкачки, результаты должны быть отсортированы по ID.

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

Ответы [ 3 ]

4 голосов
/ 22 февраля 2011

Попробуйте посмотреть на пейджинг ... Это концепция только захвата, которую вы хотите отобразить.

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

Вот кое-что, с чем я столкнулся: http://www.asp.net/data-access/tutorials/efficiently-paging-through-large-amounts-of-data-cs

РЕДАКТИРОВАТЬ: Ну, приведенный пример не будет такой большой помощью для настольных приложений, но концепция подкачки остается в силе.

3 голосов
/ 22 февраля 2011

Используя ADO.NET, вы можете использовать DataAdapter, чтобы заполнять страницы данных за один раз, по существу, то, что вы будете отображать на экране.Когда вы нажимаете до конца, он идет и получает именно те данные, которые вам нужны, чтобы показать этот последний экран.Это очень быстро, и должно быть именно то, что вам нужно.

2 голосов
/ 22 февраля 2011

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

То есть, захватите некоторое управляемое количество строк за раз (10-50), отобразите их пользователю и дайте пользовательские элементы управления, чтобы перейти к следующей / предыдущей странице строк. Вы ни в коем случае не должны сносить всю таблицу, так как пользователь вряд ли будет на самом деле каждый раз проходить все 500К строк за один присест, так что вытягивание их всех - колоссальная трата ресурсов и, вероятно, вызовет серьезную конкуренцию за ресурсы в вашем приложении.

...