Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
9 / 9 / 0
Регистрация: 25.04.2013
Сообщений: 53

Удалить таблицу из DataSet, предварительно проверив ее наличие

10.06.2015, 05:31. Показов 2454. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть вот в чем? Есть DataSet, в нем я создаю таблицы и заливаю в них данные из БД. Чтобы данные не копились в таблице ее необходимо очистить, и тут начинается проблема. Как ее очистить понятно, но при первом запуске ее нет в DataSet-e и приложение возвращает ошибку. Так вот как организовать проверку есть ли в DataSet-e таблица с определенным именем. Чистить DataSet полностью нет смысла, некоторые таблицы будут использоваться. Создавать несколько DataSet-ов, тоже неохота память засорять. Спасибо....
Вот фрагмент кода, процедура <SearchAbonNumber>:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Imports System.Data.SqlClient
 
Module md_Selects
    Public Conn As New SqlConnection                        ' Подключение к БД
    Public SqlCom As New SqlCommand                         ' Переменная для Sql запросов
    Public iDataAdapter As New SqlDataAdapter               ' Адаптер для заполнения таблицы после запроса
    Public iDataSet As New DataSet                          ' Таблица для хранения результатов запроса
    Public iPlayer As New Media.SoundPlayer                 ' Экземпляр плеера
 
    ' Подключение к базе данных
    Public Sub ConnectionToBase(ByVal server As String, ByVal user As String, ByVal pass As String, ByVal bd As String)
        Conn.ConnectionString = "Persist Security Info=False;" & _
                                "User ID=" & user & ";" & _
                                "Password=" & pass & ";" & _
                                "Initial Catalog=" & bd & ";" & _
                                "Server=" & server          ' Строка подключения с переменными из входных параметров процедуры
        Conn.Open()                                         ' Открываем соединение
        My.Settings.ConnStr = Conn.ConnectionString         ' Запись в настройки строки подключения
        GetUserName(user)                                   ' Вызов процедуры получения Имени, id пользователя и 1-ого лицевого в базе
        My.Settings.Save()                                  ' Сохранение настроек
        Conn.Close()                                        ' Закрываем соединение
    End Sub
 
    ' Получаем имя и id пользователя зашедшего в программу
    Public Sub GetUserName(ByVal user As String)
        ' Выгружаем данные зашедшего пользователя
        Try ' Настраиваем команду SQL
            With SqlCom
                iDataSet.Clear()                ' Отчищаем DataSet
                SqlCom.Connection = Conn        ' Указываем подключение
                SqlCom.CommandText = "   SELECT vPerformers.name, " & _
                                              "vPerformers.PerformerId " & _
                                        "FROM vPerformers " & _
                                        "WHERE (vPerformers.Login='" & user & "')"      ' Указываем текст запроса
            End With
            ' Настраиваем Адаптер
            With iDataAdapter
                .SelectCommand = SqlCom             ' Указываем команду на выгрузку данных из базы
                .Fill(iDataSet, "PerfInfo")         ' Выгруженные данные заливаем в DateSet и именуем как "PerfInfo"
            End With
            ' ======================================================================================================
            ' Выгружаем id первого лицевого в базе
            ' Настраиваем команду SQL
            With SqlCom
                SqlCom.Connection = Conn                                        ' Указываем подключение
                SqlCom.CommandText = "   SELECT top 1 vAbonents.AbonentId " & _
                                        "FROM dbo.vAbonents " & _
                                        "ORDER BY vAbonents.AbonNumber"         ' Указываем текст запроса
            End With
            ' Настраиваем Адаптер
            With iDataAdapter
                .SelectCommand = SqlCom             ' Указываем команду на выгрузку данных из базы
                .Fill(iDataSet, "FirstAbonent")     ' Выгруженные данные заливаем в DateSet и именуем как "PerfInfo"
            End With
            ' ======================================================================================================
            My.Settings.CurrAbonId = iDataSet.Tables("FirstAbonent").Rows(0).Item("AbonentId")      ' Запись в настройки id первого лицевого в базе
            My.Settings.CurrentUserId = iDataSet.Tables("PerfInfo").Rows(0).Item("PerformerId")     ' Запись в настройки id текущего пользователя
            My.Settings.CurrentUserName = iDataSet.Tables("PerfInfo").Rows(0).Item("name")          ' Запись в настройки имени текущего пользователя
 
            iDataAdapter.Dispose()                                                  ' Освобождаем ресурсы от DataAdapter
            iDataSet.Dispose()                                                      ' Освобождаем ресурсы от DataSet
            SqlCom.Dispose()                                                        ' Освобождаем ресурсы от SqlCom
            iDataSet.Tables("PerfInfo").DataSet.Tables.Remove("PerfInfo")           ' Удаляем PerfInfo из DataSet
            iDataSet.Tables("FirstAbonent").DataSet.Tables.Remove("FirstAbonent")   ' Удаляем FirstAbonent из DataSet
            ' ======================================================================================================
        Catch ex As Exception
            ' Сообщение при неудачном подключении к базе данных
            MsgBox(ex.Message, MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "ПК Припять")
            Conn.Close()
        End Try
    End Sub
 
    ' Получаем основные данные и историю состояния по Id из My.Settings.CurrAbonId
    Public Sub GetGeneralInfo()
        Try
            Conn.Open()                                                                 ' Открываем соединение
            ' Выгружаем историю абонента
            ' Настраиваем команду SQL
            With SqlCom
                iDataSet.Clear()                                                        ' Отчищаем DataSet
                SqlCom.Connection = Conn                                                ' Указываем подключение
                SqlCom.CommandText = "Exec  Pr_GetAbonentHistory " & _
                                           "@AbonentId=" & My.Settings.CurrAbonId       ' Указываем текст запроса
            End With
            ' Настраиваем Адаптер
            With iDataAdapter
                .SelectCommand = SqlCom                 ' Указываем команду на выгрузку данных из базы
                .Fill(iDataSet, "AbonentHistory")       ' Выгруженные данные заливаем в DateSet и именуем как "AbonentHistory"
            End With
            ' ======================================================================================================
            ' Выгружаем основную информацию по абоненту
            ' Настраиваем команду SQL
            With SqlCom
                SqlCom.Connection = Conn                                                    ' Указываем подключение
                SqlCom.CommandText = "   SELECT * " & _
                                        "FROM dbo.vPr_AbonentInfo " & _
                                        "WHERE(AbonentId =" & My.Settings.CurrAbonId & ")"  ' Указываем текст запроса
            End With
            ' Настраиваем Адаптер
            With iDataAdapter
                .SelectCommand = SqlCom         ' Указываем команду на выгрузку данных из базы
                .Fill(iDataSet, "GenInfo")      ' Выгруженные данные заливаем в DateSet и именуем как "AbonentHistory"
            End With
            ' ======================================================================================================
            iDataAdapter.Dispose()      ' Освобождаем ресурсы от DataAdapter
            iDataSet.Dispose()          ' Освобождаем ресурсы от DataSet
            Conn.Close()                ' Закрываем соединение
 
        Catch ex As Exception
            ' Сообщение при неудачном подключении к базе данных
            MsgBox(ex.Message, MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "ПК Припять")
            Conn.Close()
        End Try
    End Sub
 
    ' Поиск абонента по лицевому счету
    Public Sub SearchAbonNumber(ByVal AbonNumber As String)
        Try ' Настраиваем команду SQL
            With SqlCom
                iDataSet.Tables("FindedAbonents").Clear()            ' Отчищаем DataSet
                SqlCom.Connection = Conn                               ' Указываем подключение
                '                                                                  ' Указываем текст запроса
                SqlCom.CommandText = "SELECT vAbonents.AbonentId, " & _
                                            "vAbonents.AbonNumber AS '№ Абонента', " & _
                                            "vMainFamilyMembers.LastSurName AS 'ФИО', " & _
                                            "vAbonents.CommAddressString AS 'Адрес' " & _
                                     "FROM   vAbonents vAbonents, " & _
                                            "vMainFamilyMembers " & _
                                            "vMainFamilyMembers " & _
                                     "WHERE  vAbonents.AbonentId = vMainFamilyMembers.AbonentId " & _
                                     "AND ((vAbonents.AbonNumber LIKE '%" & AbonNumber & "%'))"
            End With
            ' Настраиваем Адаптер
            With iDataAdapter
                .SelectCommand = SqlCom                 ' Указываем команду на выгрузку данных из базы
                .Fill(iDataSet, "FindedAbonents")       ' Выгруженные данные заливаем в DateSet и именуем как "AbonentHistory"
            End With
            ' ======================================================================================================
            iDataAdapter.Dispose()      ' Освобождаем ресурсы от DataAdapter
            iDataSet.Dispose()          ' Освобождаем ресурсы от DataSet
            Conn.Close()                ' Закрываем соединение
 
        Catch ex As Exception
            ' Сообщение при неудачном подключении к базе данных
            MsgBox(ex.Message, MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "ПК Припять")
            Conn.Close()
        End Try
    End Sub
End Module
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2015, 05:31
Ответы с готовыми решениями:

Вычислить значение функции, предварительно проверив, что это возможно при заданных значениях аргументов
Помогите пожалуйста с заданиями.Нужны алголитмы программ по заданиям на паскале,оператор цикла использовать нельзя...совсем ничем не ...

Передача данных из таблицы одной dataSet в таблицу другой dataSet
Здравствуйте. У меня возникла ситуация когда необходимо передать данные из таблицы одной dataset в таблицу другой dataset, которая хранит...

Как предварительно отсортировать таблицу в IBExpert?
Привет народ,как предварительно отсортировать таблицу в IBExpert? Делаю программу заметок, с последующим динамическим созданием...

2
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
10.06.2015, 06:10
VB.NET
1
If iDataSet.Tables.Contains("FindedAbonents") Then  iDataSet.Tables.Remove("FindedAbonents")
3
9 / 9 / 0
Регистрация: 25.04.2013
Сообщений: 53
10.06.2015, 07:19  [ТС]
Спасибо. Как всегда все просто оказалось))). А не посоветуете еще как провести оптимизацию объектов ADO для меньшего использования памяти? Я например в конце пишу
VB.NET
1
2
3
 iDataAdapter.Dispose()                                                  ' Освобождаем ресурсы от DataAdapter
            iDataSet.Dispose()                                                        ' Освобождаем ресурсы от DataSet
            SqlCom.Dispose()                                                         ' Освобождаем ресурсы от SqlCom
Достаточно этого или есть еще какие то приемы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2015, 07:19
Помогаю со студенческими работами здесь

Как засунуть json файл в таблицу, предварительно создав ее
Есть готовый json, парсится с помощью js и jquery , далее либо с помощью js написать скрипты , которые проносят инфу с json в бд, либо...

Связать таблицу DataSet и таблицу БД
Доброго всем дня! Подскажите, пожалуйста, как можно связать таблицу находящуюся в datasete или datatable с таблицей находящейся в базе? ...

Удалить дубликаты слов предварительно отсортировав их в файл
В вашем файле находится сонет Шекспира. Необходимо переписать слова без повторений в другой файл, отсортировав их в алфавитном порядке....

Удалить текстовый файл, предварительно закрыв его
Как так сделать? Под закрыть подразумевается сделать так, чтобы к нему был доступ, и он не был занят другим процессом.

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru