Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Понятие набора данных как виртуальной базы
ДАННЫХ
В пространстве имен System.Data определена система классов, которая реализует понятие набора данных. Набор данных (DataSet) представляет собой виртуальную базу данных, которая расположена в оперативной памяти и состоит из набора (коллекции) таблиц (объектов класса DataTable) и связей между ними (объектов класса DataRelation). Каждая таблица имеет набор столбцов (объектов типа DataColumn) и набор строк (объектов типа DataRow). Все таблицы в наборе данных хранятся в виде коллекции Tables. Столбцы в таблице хранятся тоже в виде коллекции под названием Columns, а строки – в виде коллекции под названием Rows. Обращение с таблицами набора данных напоминает работу с базой данных – у таблиц имеется функция Select(), которая задает параметры сортировки и выборки данных. Таким образом, можно моделировать различные запросы. Набор данных можно создавать программно посредством создания объектов-таблиц и столбцов. Сохранять информацию набора данных можно в формате XML с помощью функции WriteXml(). Также возможна и загрузка информации из XML-файла с помощью функции ReadXml().
СВЯЗЬ НАБОРА ДАННЫХ И БАЗЫ ДАННЫХ
Набор данных может быть связан с реальными базами данных, реализованными с помощью различных СУБД. Это реализуется с помощью объекта типа OdbcDataAdapter (или OleDbDataAdapter в зависимости от способа соединения с базой данных). Создание SQL-команды осуществляется с помощью адаптера. Кроме того, класс-адаптер имеет специальный метод, который позволяет записать результат выполнения запроса в таблицу набора данных. Приведем пример заполнения набора данных с помощью адаптера: // создание подключения к базе данных на основе строки соединения // с указанием источника данных ODBC OdbcConnection con = new OdbcConnection("DSN=proba"); // подключение к источнику данных con.Open(); // формирование адаптера для связи с базой данных OdbcDataAdapter adapt = new OdbcDataAdapter ("select * from Sessions", con); // создание набора данных для сохранения результата запроса DataSet ds = new DataSet(); // заполнение таблицы набора данных (второй параметр) // из базы данных через адаптер adapt.Fill(ds,”Sessions”); // перебор строк из полученной таблицы Sessions набора данных // имена столбцов в таблице набора данных будут теми же, // что и в исходной таблице базы данных foreach (DataRow dr in ds.Tables[“Sessions”])
Console.WriteLine(“”+dr[“NumGroup”]+” “+dr[“idSubject”]+ ” ”+dr[“Zach_exam”]); con.Close();
Отметим, что, так как набор данных является уже отсоединенным от базы данных, можно повторно просматривать элементы данных в любом порядке.
КАК СИНХРОНИЗИРОВАТЬ ИЗМЕНЕНИЯ В НАБОРЕ ДАННЫХ С БАЗОЙ ДАННЫХ
В набор данных можно вносить любые изменения – добавлять новые строки, изменять и удалять существующие строки. Например, добавить строку в таблицу Sessions набора данных можно следующим образом: // создание строки на основе схемы таблицы Sessions набора данных DataRow newRow = ds.Tables[“Sessions”].NewRow(); // получилась пустая строка, столбцы которой должны быть заполнены newRow[“NumGroup”]=”903”; newRow[“idSubject”]=5; ... // добавление созданной строки в таблицу ds.Tables[“Sessions”].Add(newRow);
Однако все изменения происходят с отсоединенным набором данных, т.е. в оперативной памяти компьютера клиентского приложения, но не в базе данных. Чтобы изменения были внесены в исходную базу данных, требуется синхронизировать набор данных и базу с помощью функции класса-адаптера Update(). Однако такая синхронизации возможна только в случае, когда объектадаптер имеет инициализированные свойства-команды SelectCommand, InsertCommand, UpdateCommand, DeleteCommand. По умолчанию при создании адаптера инициализируется только SelectCommand. Возможно задание остальных команд «вручную». Для удобства и стандартной инициализации всех свойств-команд адаптера существует специальный класс OdbcCommandBuilder, который генерирует все команды и заполняет соответствующие свойства адаптера. После этого можно проводить синхронизацию изменений с помощью функции Update(). Приведем пример такого программного кода: // создание подключения к базе данных на основе строки соединения // с указанием источника данных ODBC OdbcConnection con = new OdbcConnection("DSN=proba"); // подключение к источнику данных con.Open(); // формирование адаптера для связи с базой данных OdbcDataAdapter adapt = new OdbcDataAdapter ("select * from Sessions", con); // создание команд для адаптера OdbcCommandBuilder cb = new OdbcCommandBuilder(adapt);
// создание набора данных для сохранения результата запроса DataSet ds = new DataSet(); // заполнение таблицы набора данных (второй параметр) // из базы данных через адаптер adapt.Fill(ds,”Sessions”); ... // любые действия с набором данных – изменение существующих строк, // добавление новых, удаление // синхронизация изменений с базой данных adapt.Update(); // закрывается соединение con.Close();
|
|||||
Последнее изменение этой страницы: 2021-04-12; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.136.170 (0.006 с.) |