ebook img

Microsoft ADO.NET PDF

632 Pages·2003·8.724 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Microsoft ADO.NET

David Sceppa Microsoft ® ADO.NET Дэвид Сеппа Microsoft ® ADO.NET Москва 2003 УДК 004.45 ББК 32.973.26(cid:6)018.2 С28 Сеппа Д. С28 Microsoft ADO.NET/Пер. с англ. — М.: Издательско(cid:19)торговый дом «Русская Редакция», 2003. — 640 стр.: ил. ISBN 978-5–7502–0223—2 Эта книга представляет собой достаточно полный справочник по библиоте(cid:19) кам ADO.NET, поставляемым с Microsoft .NET Framework. Вы узнаете об основных объектах модели ADO.NET и научитесь сохранять, искать, фильтровать и сорти(cid:19) ровать данные с использованием этих объектов. Структура книги позволяет по(cid:19) следовательно изучить ADO.NET «с нуля» или, если вы опытный разработчик, бы(cid:19) стро найти ответы на интересующие вас вопросы. Здесь рассматриваются как подсоединенные, так и отсоединенные объекты, в том числе DataAdapter, DataSet, Connection, Command, Transaction, DataReader и др. Отдельный раздел книги по(cid:19) священ созданию эффективных Windows(cid:19) и Web(cid:19)приложений для доступа к БД с использованием ADO.NET Книга адресована прежде всего разработчикам приложений с поддержкой Web для доступа к БД при помощи Microsoft Visual Studio .NET и ADO.NET, а также всем, кто интересуется новой объектной модели ADO.NET Книга состоит из 14 глав, приложений и предметного указателя. Дополнительные материалы к книге могут находиться на ресурсах, указанных в тексте, и на сайте www.microsoft.com УДК 004.45 ББК 32.973.26(cid:6)018.2 © 2003-2012, Translation Russian Edition Publishers. Authorized Russian translation of the English edition of Microsoft® ADO.NET (Core Reference), ISBN 9780735614239 © Microsoft Corporation. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. © 2003-2012, перевод ООО «Издательство «Русская редакция». Авторизованный перевод с английского на русский язык произведения Microsoft® ADO.NET (Core Reference), ISBN 9780735614239 © Microsoft Corporation. Этот перевод оригинального издания публи- куется и продается с разрешения O’Reilly Media, Inc., которая владеет или распоряжается всеми правами на его публикацию и продажу. © 2003-2012, оформление и подготовка к изданию, ООО «Издательство «Русская редакция». Microsoft, а также товарные знаки, перечисленные в списке, расположенном по адресу: http://www.microsoft.com/about/legal/en/us/IntellectualProperty/Trademarks/EN-US.aspx являются товарными знаками или охраняемыми товарными знаками корпорации Microsoft в США и/или других странах. Все другие товарные знаки являются собственностью соответствующих фирм. Все адреса, названия компаний, организаций и продуктов, а также имена лиц, используемые в примерах, вымышлены и не имеют никакого отношения к реальным компаниям, организациям, продуктами лицам. Оглавление Благодарности XXI Введение XXII Кому предназначена эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII Структура книги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII Примеры кода, утилиты и прочие забавные штуки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIII Системные требования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIII Техническая поддержка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIV Ч А С Т Ь 1 ОСНОВЫ РАБОТЫ С MICROSOFT ADO.NET 1 Глава 1 Обзор ADO.NET 2 Зачем нужна новая объектная модель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Объектная модель ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Поставщики данных .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Зачем необходимы отдельные классы и библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Повышенная производительность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Замечательные возможности расширения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Пролиферация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Обсуждение поставщиков данных .NET в этой книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Подсоединенные объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Объект Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Объект Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Объекты DataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Объект Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Объект Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Объект DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Отсоединенные объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Объект DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Объект DataColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Объект Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Объект DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Объект DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Объект DataRelation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Объект DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Метаданные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Объекты DataSet со строгим контролем типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Вопросы, которые стоит задавать почаще . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Глава 2 Создание ADO.NET-приложений с помощью мастера DataForm Wizard 21 Все без ума от примеров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Создание связанной с данными формы средствами мастера Data Form Wizard . . . . . . . . . 22 Выбор подключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Выбор таблиц БД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Создание отношений в объекте DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 VI Оглавление Выбор отображаемых столбцов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Выбор стиля отображения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Использование новой связанной с данными формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Отображение данных в связанной форме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Изучаем сгенерированный мастером код . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Реализация каскадных изменений с помощью объекта DataRelation . . . . . . . . . . . . . 32 Передача изменений в базу данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Вызываем метод Update объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Изоляция измененных записей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Реинтеграция изменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Панель компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Мастер Data Form Wizard — отправная точка создания приложений для работы с БД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Вопросы, которые стоит задавать почаще . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Ч А С Т Ь 2 ПОДКЛЮЧАЕМСЯ: ИСПОЛЬЗОВАНИЕ ПОСТАВЩИКА ДАННЫХ .NET 39 Глава 3 Подключение к базе данных 40 Использование объектов Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Создание объектов Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Конструкторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Строки подключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Поставщик OLE DB для БД SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Поставщик OLE DB для БД Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Поставщик OLE DB для БД Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Поставщик OLE DB для драйверов ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Создание строк подключения в коде при помощи диалогового окна Data Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Создание строк подключения вручную при помощи диалогового окна Data Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Использование .udl(cid:18)файлов в строке подключения . . . . . . . . . . . . . . . . . . . . . . . . 49 Открытие и закрытие соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Использование пула соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Что такое пул соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Как включить пул соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Что делать, если не надо помещать соединения в пул . . . . . . . . . . . . . . . . . . . . . . 53 Как узнать, действительно ли закрыто соединение или оно просто помещено в пул . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Разрыв соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Создание других объектов с помощью объектов Connection . . . . . . . . . . . . . . . . . . . . . . 54 Создание объектов Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Выполнение транзакций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Получение информации схемы БД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Функции среды Visual Studio .NET, доступные в период разработки . . . . . . . . . . . . . . . . . . . . . . 58 Работа с объектами Connection в окне Server Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Добавление соединений в Server Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Поставщики данных OLE DB, ODBC и .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Сохранение пароля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Интегрированная проверка подлинности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Добавление соединений в приложение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Оглавление VII Панель компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Использование нового соединения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Создание объектов Connection с помощью панели инструментов . . . . . . . 63 Использование нового соединения в период выполнения . . . . . . . . . . . . . . . . . . . . . . . . 64 Где же код? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Особенности объекта OleDbConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Свойства объекта OleDbConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Свойство ConnectionString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Свойство ConnectionTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Свойства Database и DataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Свойство Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Свойство ServerVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Свойство State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Методы объекта OleDbConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Метод BeginTransaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Метод ChangeDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Метод Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Метод CreateCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Метод GetOleDbSchemaTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Метод Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Метод ReleaseObjectPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 События объекта OleDbConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Событие InfoMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Событие StateChange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Вопросы, которые стоит задавать почаще . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Глава 4 Выполнение запросов к базе данных 81 Использование объектов Command в коде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Создание объекта Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Выполнение запроса, не возвращающего записей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Просмотр результатов запроса с помощью объекта DataReader . . . . . . . . . . . . . . . . . . 85 Выборка результатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Ускоренная выборка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Выборка нескольких наборов результатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Выполнение пакетов командных запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Закрытие объекта DataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Выполнение запроса, возвращающего одно значение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Выполнение параметризованного запроса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Вызов хранимой процедуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Получение данных при помощи параметров вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Выполнение запроса в транзакции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Создание объектов Command в Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Перетаскивание с панели инструментов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Задание значения свойства Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Использование Query Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 Использование нового объекта Command в коде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 Перетаскивание из Server Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Особенности объектов Command, DataReader и Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 Свойства объекта OleDbCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 Свойство CommandTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 Свойство CommandType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 Свойство Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 VIII Оглавление Свойство Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 Свойство UpdatedRowSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 Методы объекта OleDbCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 Метод Cancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 Метод ExecuteNonQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Метод ExecuteReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Метод ExecuteScalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Метод Prepare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Метод ResetCommandTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Свойства объекта OleDbDataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Свойство Depth и метод GetData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Свойство FieldCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Свойство IsClosed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Свойство Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Свойство RecordsAffected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 Методы объекта OleDbDataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 Метод Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 Метод GetValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Методы Get<ТипДанных> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Метод GetValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Метод NextResult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 Метод Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 Методы GetName, GetOrdinal и GetDataTypeName . . . . . . . . . . . . . . . . . . . . . . . . .118 Метод GetSchemaTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 Метод GetData и свойство Depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Создание объектов Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Свойства объекта OleDbParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Свойство ParameterName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Свойство Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Свойство Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Свойства SourceColumn и SourceVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Свойства DbType и OleDbType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Свойства Precision, Scale и Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Вопросы, которые стоит задавать почаще . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Глава 5 Получение данных с помощью объектов DataAdapter 133 Что представляет собой объект DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Чем объект DataAdapter отличается от других объектов, основанных на запросах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Объект DataAdapter предназначен для работы с отсоединенными данными . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Между объектами DataAdapter и DataSet нет прямой связи . . . . . . . . . . . . . . .135 Объект DataAdapter содержит логику обновления для передачи в БД изменений, хранящихся в объекте DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 Логикой обновления в объекте DataAdapter можно управлять . . . . . . . . . . .135 Анатомия объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 Дочерние команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 Набор TableMappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 Создание и использование объектов DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 Создание объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 Конструкторы DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 Оглавление IX Получение результатов запроса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Использование метода Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Создание объектов DataTable и DataColumn при помощи метода Fill . . .142 Использование перегруженных методов Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Открытие и закрытие соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 Многократный вызов метода Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145 Сопоставление результатов запроса объекту DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 Набор TableMappings объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 Свойство MissingMappingAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 Работа с пакетными запросами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 Получение результатов выполнения хранимых процедур . . . . . . . . . . . . . . . . . . . . . . . .149 Хранимые процедуры Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 Выборка информации схемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 Свойство MissingSchemaAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 Метод FillSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Создание объектов DataAdapter в Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Перетаскивание объекта DataAdapter с панели инструметов . . . . . . . . . . . . . . . . . . . .151 Использование мастера Data Adapter Configuration Wizard . . . . . . . . . . . . . . . . . . . . . . .151 Перетаскивание из Server Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 Предварительный просмотр результатов, возвращаемых объектом DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Просмотр кода, генерируемого мастером . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Особенности объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Свойства объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Свойства SelectCommand, UpdateCommand, InsertCommand и DeleteCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 Свойство TableMappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 Свойства MissingMappingAction и MissingSchemaAction . . . . . . . . . . . . . . . . . . .161 Свойство AcceptChangesDuringFill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 Свойство ContinueUpdateOnError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 Методы объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 Метод Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 Метод FillSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 Метод GetFillParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 Метод Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 События объекта DataAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 Событие FillError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 События RowUpdating и RowUpdated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 Вопросы, которые стоит задавать почаще . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 Ч А С Т Ь 3 АВТОНОМНАЯ РАБОТА С ДАННЫМИ: ОБЪЕКТ DATASET МОДЕЛИ ADO.NET 173 Глава 6 Работа с объектами DataSet 174 Возможности объекта DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174 Работа с отсоединенными данными . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Прокрутка, сортировка, поиск и фильтрация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Работа с иерархически организованными данными . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Кэширование изменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Интеграция с XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Универсальная функциональность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 X Оглавление Использование объектов DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Создание объекта DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Просмотр структуры, создаваемой при вызове метода DataAdapter.Fill . . . . . . . . .177 Объект DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 Объект DataColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 Просмотр данных, возвращаемых объектом DataAdapter . . . . . . . . . . . . . . . . . . . . . . . .179 Объект DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 Просмотр содержимого объекта DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 Просмотр объектов DataRow в объекте DataTable . . . . . . . . . . . . . . . . . . . . . . . . .181 Проверка данных в объекте DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 Свойства объекта DataColumn, используемые для проверки данных . . .183 Набор Constraints объекта DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 Получение информации схемы с помощью метода DataAdapter.FillSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 Создание объектов DataTable в коде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 Создание объекта DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 Добавление объекта DataTable в набор Tables объекта DataSet . . . . . . . . . . .186 Добавление столбцов в объект DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 Указание типа данных объекта DataColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 Добавление первичного ключа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 Добавление других ограничений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 Использование столбцов с автоинкрементом . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 Добавление столбца, основанного на выражении . . . . . . . . . . . . . . . . . . . . . . . . .196 Создание объектов DataTable, соответствующих таблицам Customers, Orders и Order Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 Изменение содержимого объекта DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 Добавление нового объекта DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 Редактирование существующей записи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 Работа со значениями Null в объекте DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Удаление объекта DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 Исключение объекта DataRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Использование свойства DataRow.RowState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Просмотр отложенных изменений объекта DataRow . . . . . . . . . . . . . . . . . . . . .208 Работа с объектами DataSet в среде Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 Генерирование объекта DataSet на основе объектов DataAdapter . . . . . . . . . . . . . . . .211 Создание нового объекта DataSet «с нуля» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214 Создание объекта DataSet без контроля типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217 Особенности объектов DataSet, DataTable, DataColumn, DataRow, UniqueConstraint и ForeignKeyConstraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Свойства объекта DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Свойство CaseSensitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Свойство DataSetName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 Свойство DesignMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 Свойство EnforceConstraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 Свойство ExtendedProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 Свойство HasErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 Свойство Locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 Свойства Namespace и Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Свойство Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Свойство Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Оглавление XI Методы объекта DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Методы AcceptChanges и RejectChanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225 Методы BeginInit и EndInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 Метод Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 Методы Clone и Copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 Метод GetChanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 Методы GetXml и GetXmlSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Метод HasChanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Метод Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Методы ReadXml и WriteXml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Методы ReadXmlSchema, WriteXmlSchema и InferXmlSchema . . . . . . . . . . . .227 Метод Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 События объекта DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 Событие MergeFailed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 Свойства объекта DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 Свойство CaseSensitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 Свойства ChildRelations и ParentRelations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 Свойство Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 Свойство Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 Свойство DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Свойство DefaultView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Свойство DesignMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Свойство ExtendedProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Свойство HasErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Свойство Locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Свойство MinimumCapacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Свойства Namespace и Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Свойство PrimaryKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Свойство Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232 Свойство TableName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232 Методы объекта DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232 Методы AcceptChanges и RejectChanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Методы BeginInit и EndInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Методы BeginLoadData и EndLoadData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Метод Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Методы Clone и Copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Метод Compute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Метод GetChanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235 Метод GetErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235 Методы ImportRow, LoadDataRow и NewRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235 Метод Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236 Метод Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236 События объекта DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236 События ColumnChanged и ColumnChanging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236 События RowChanged и RowChanging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237 События RowDeleted и RowDeleting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237 Свойства объекта DataColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237 Свойство AllowDBNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238 Свойства AutoIncrement, AutoIncrementSeed и AutoIncrementStep . . . . . .238

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.