на начало
На главную страницу
Форум   

Статья :: Основные сведения о наборах данных


Основные сведения о наборах данных

Можно также выбрать подмножество данных из объекта DataSet (Набор данных). Метод Select (Выбрать) класса DataTable (Таблица данных) имеет синтаксис, совпадающий с синтаксисом фразы "where" в SQL-запросах. Для доступа к полям строки используются имена столбцов Ниже приведен пример из описания класса HotelBroker (Посредник, бронирующий места в гостинице), в котором этот метод используется для получения списка отелей определенного города.

ArrayList *GetHotels(String *city)
{
try
{
DataTable *t = hotelsDataset->
Tables->get_Item("Hotels"); // Гостиницы
DataRow *rows [] = t->Select( // Выбор
String::Format("City = '{0}'", city)); // Строка:: Формат ("Город = ' {0} ' ", город));
ArrayList *hotels = new ArrayList;
for (int i=0; i < rows->Length; i++)
{
String *name = rows[i]->get_Item(
"HotelName") ->ToString {) ->Tnm() ; // Вырезка
hotels->Add(name); // гостиницы-> Добавить (название);
}
return hotels; // гостиницы
}
catch(Exception *e) // Исключение
{
throw e;
}
}

Метод AddHotel класса HotelBroker (Посредник, бронирующий места в гостинице) иллюстрирует, как добавляется новая строка в объект DataSet (Набор данных) При этом создается новый экземпляр класса DataRow и для добавления данных в соответствующие поля используются имена столбцов
Если необходимо сохранить созданную строку в базе данных, используется метод Update (Обновить) класса SqlDataAdapter Он является промежуточным звеном между объектом DataSet (Набор данных) и базой данных Позже мы обсудим, как производить транзакционное редактирование набора данных для того, чтобы принять или отвергнуть изменения до их передачи в базу данных

String *AddHptel( // Строка
String *city, // Строка
String *name, // Строка
int number, // номер
Decimal rate) // Десятичная цена
{
try
{
DataTable *t = hotelsDataset->Tables->get_Item( // Таблицы
"Hotels"); // Гостиницы
DataRow *r = t->NewRow();
r->set_Item("HotelName", name); // название
r->set_Item("City", city); // ("Город", город)
r->set_Item("NumberRooms", _box(number));
r->set_Item("RoomRate", _box(rate));
t->Rows->Add(r); // Строки-> Добавить
hotelsAdapter->Update(hotelsDataset, "Hotels"); // Обновить "Гостиницы"
}
catch(Exception *e) // Исключение
{
throw e;
}
}

Для удаления строки из объекта DataSet (Набор данных) прежде всего необходимо найти эту строку или строки, а затем вызвать метод Delete (Удалить) для каждого из удаляемых экземпляров DataRow. Метод Remove (Удалить) удаляет экземпляр DataRow из коллекции Этот экземпляр не помечается как удаленный, так как он уже не является частью объекта DataSet (Набор данных) При вызове метода Update (Обновить) преобразователя данных соответствующие данные не будут удалены из базы данных Приведем фрагмент метода DeleteHotel класса HotelBroker (Посредник, бронирующий места в гостинице)

String *DeleteHotel(String *city, String *name) // Строка
*DeleteHotel (Строка *city, Строка *name)
{
try
{
t = hotelsDataset->Tables->get_Item("Hotels"); // Таблицы-> get_Item ("Гостиницы")
r = t->Select ( // Выбор String::Format(
// Строка:: Формат (
"City = '{0}' and HotelName = '{!}'",
// "Город = ' {0} ' и HotelName ='{!}' ",
city, name)); // город, название
for (i=0; i<r->Length; i++)
r[i]->Delete (); // Удалить
}

Для изменения строки набора данных достаточно просто найти эту строку и внести необходимые изменения в поля строки. В качестве примера ниже приведен фрагмент реализации метода ChangeRooms класса HotelBroker (Посредник, бронирующий места в гостинице). При вызове метода Update (Обновить) преобразователя данных, все изменения, сделанные в этом фрагменте, будут переданы базе данных.

String *ChangeRooms( // Строка
String *city, // Строка
String *name, // Строка
int numberRooms,
Decimal rate) // Десятичная цена
{
DataTable *t = 0;
try
{
t = hotelsDataset->Tables->get_Item("Hotels"); // Таблицы-> get_Item ("Гостиницы")
DataRow *r [] = t->Select( // Выбор
String::Format(
// Строка:: Формат (
"City = '{0}' and HotelName = '{I}1",
// "Город = ' {0} ' и HotelName = ' {1} ' ",
city, name)); // город, название
for (int i = 0; i < r->Length; i++) {
r[i]->set_Item("NumberRooms", _box(numberRooms));
r[i]->set_Item("RoomRate", _box(rate)) ; }
} }


Основные сведения о наборах данных

страницы в данном разделе 
Глава 9. Программирование в ADO.NET Программирование в ADO.NET
Источники данных Проводник Visual Studio.NET по серверу: Server Explorer
Установление соединения Устройства считывания данных
Работа с базой данных в соединенном режиме Выполнение операторов SQL
DataReader Множественное результирующее множество
Коллекция параметров Классы SqlDataAdapter и DataSet (Набор данных)
Отсоединенный режим Коллекции объектов DataSet (Набор данных)
Основные сведения о наборах данных Обновление источника данных
Автоматически генерируемые свойства команд Транзакции и обновление базы данных
Объект DataSet (Набор данных) и сравнение пессимистического блокирования с оптимистическим Использование наборов данных
Множественные таблицы в объекте DataSet (Набор данных) Создание таблицы без обращения к источнику данных
Ограничения и связи Получение информации о схеме размещения данных в объекте DataTabie (Таблица данных)
Изменение объекта DataRow Пример приложения Acme Travel Agency (Туристическое агентство Acme)
Доступ к данным XML Схема и данные XML
XmlDataDocument DataSet (Набор данных) и XML
База данных AirlineBrokers DataSet (Набор данных) и XML
Создание документа XML из объекта DataSet (Набор данных) Резюме


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста