Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
6 / 10 / 4
Регистрация: 13.02.2014
Сообщений: 185

Долго считываются данные из БД

20.12.2016, 17:07. Показов 667. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему данные долго открывается
Вложения
Тип файла: rar pr.rar (1.27 Мб, 15 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2016, 17:07
Ответы с готовыми решениями:

Не считываются данные с БД
Есть БД "DataBase",в которой есть таблица "Actors" (Id(smallint ключ),Name(nchar),Login(nchar),Password(nchar),Speciality(nchar (Или...

Неправильно считываются данные
readln(n,m); for i:=1 to n do begin for j:=1 to m do begin read(input); mp.marked:=False; if...

Не считываются данные с консоли
Проблема заключается в том, что не считываются данные с консоли. Не могу понять почему....Выводит ошибку доступа к данным. Ясно, что дело в...

5
222 / 175 / 73
Регистрация: 05.11.2015
Сообщений: 533
20.12.2016, 17:35
Алибек Умаров, наверно потому, что их просто много. Возможно можно как то оптимизировать процедуру вывода данных из таблицы БД в DataGridView
0
1723 / 1570 / 165
Регистрация: 25.07.2015
Сообщений: 2,658
20.12.2016, 20:28
Алибек Умаров, попробуйте результат ваших циклов с запросами заливать в datatable,
а по окончании присвоить DataGridView2.DataSource=datatable
Должно быть быстрее , чем построчная перерисовка grid.
Касаемо БД , там оптимизировать мало что можно, разве что проиндексировать поле id_table,
но большого ускорения это не даст ...все лаги, как мне кажется , в перерисовке заключаются.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
20.12.2016, 20:50
Алибек Умаров, это происходит из неэффективной работы с БД. Вот код метода LoadAll
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Sub LoadAll()
        Dim df As Double = 0
        Dim connection As OleDb.OleDbConnection = New OleDbConnection
        connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\1.mdb;Jet OLEDB:Database Password=123"
        connection.Open()
        Dim da As OleDb.OleDbDataAdapter = New OleDbDataAdapter("SELECT [id_rabota] FROM [TB2]", connection)
        Dim ds As New DataSet
        da.Fill(ds, "ne1")
        For i = 0 To ds.Tables(0).Rows.Count - 1
            Dim da1 As OleDb.OleDbDataAdapter = New OleDbDataAdapter("SELECT  [F_1], [F_2], [F_3] FROM [TB1] WHERE id_table like '" & ds.Tables(0).Rows(i).Item(0) & "'", connection)
            da1.Fill(ds, "ne2")
            For j = 0 To ds.Tables(1).Rows.Count - 1
                df += CDbl(ds.Tables(1).Rows(j).Item(0))
            Next
            DataGridView2.Rows.Add(df)
            df = 0
            ds.Tables(1).Clear()
        Next
        connection.Dispose()
        connection = Nothing
 
    End Sub

Он получает все строки из таблицы TB2 (N штук) и затем для каждой строки делает новый запрос к таблице TB1. То есть в итоге мы делаем 1+N запросов. Свою лепту в замедление вносит ручной подсчет и использование классов DataSet. Вместо этого нужно написать один запрос который сразу вернет все необходимые данные. Например так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Using connection As New OleDbConnection
 
    connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\1.mdb;Jet OLEDB:Database Password=123"
 
    Dim command As New OleDbCommand
    command.CommandText = "SELECT SUM([F_1]) FROM TB1 GROUP BY id_table"
    command.Connection = connection
 
    connection.Open()
    Using reader As OleDbDataReader = command.ExecuteReader()
        Do While reader.Read()
            DataGridView2.Rows.Add(If(reader.IsDBNull(0), 0, reader.GetDouble(0)))
        Loop
    End Using
 
End Using
Данный метод на моей машине работает примерно в 8 раз быстрее первоначального. Правда он делает не совсем тоже самое из-за того что в таблице TB2 есть одинаковые строки назначение которых лично мне непонятно.
2
6 / 10 / 4
Регистрация: 13.02.2014
Сообщений: 185
22.12.2016, 16:06  [ТС]
OwenGlendower, Спасибо за полезную информацию!

У меня возникла такой вопрос: имеется ли код похожие на этот "SELECT SUM([F_1]) FROM TB1 GROUP BY id_table"
чтобы можно было выполнит согласно таблицу приведённую на ЕXCEL.
Образец программу я вам отправлю.
Благодарю за ранее!
Вложения
Тип файла: rar pr1.rar (1.28 Мб, 1 просмотров)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
22.12.2016, 16:08
Алибек Умаров, насколько мне известно к Excel можно подключаться как к БД и делать SQL запросы, но я этим никогда не занимался. Поищите информацию самостоятельно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2016, 16:08
Помогаю со студенческими работами здесь

Почему на считываются данные ?
Почему не считываються данные ? Парни помогите!!! Вроде все правильно, но он показывает как будто бы переменная пустая ... ...

Не считываются данные с формы
function sendCallBackData(){ var name = document.getElementById('name').value; var phone =...

Какой командой считываются данные ?
Какой командой считываются данные из элементов HTML в ява скрипт... Например... Допустим я хочу умножить цифры которые вводит пользователь,...

Не считываются данные с полей ввода
В общем, необходимо было чтобы данные которые вводит пользователь в поля добавлялись в куки и потом постоянно там отображались. Так вот,...

Не считываются данные из файла в объект
Pass_order.h: #pragma once #include"Information_of_Order.h" class Pas_order :public Information_of_Order{ protected: int...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru