
- •С.А.Матюхин Свойства и методы компонентов в c# Форма
- •Компоненты
- •Системные классы
- •Функции по работе с файлами и каталогами
- •Доступ к базе данных -
- •Объекты поставщики данных
- •Объект Connection
- •Дополнительные пространства имён ado.Net
- •Объект Command
- •Объект DataBuilder
- •Объект DataReader
- •Объект DataAdapter
- •Объект Transaction
- •Объекты- потребители данных
- •Типы System.Data
- •Класс DataRow
- •События изменения значений в строках таблицы данных
- •Адаптер данных
Функции по работе с файлами и каталогами
Приведённые ниже функции принадлежат пространству имён System.IO. Далее используются такие обозначения:
di – объект DirectoryInfo, информация о каталоге
fi – объект типа FileInfo
path – строковая переменная, указывающая путь
mask – критерй отбоа файлов при анализе каталого
fn – имя файла (FileName)
Функция (метод) |
Описание |
DirectoryInfo (path) |
Создаёт объект типа DirectoryInfo (в дольнейшем - di) , соответствующий каталогу, заданному параметром s, являющимся путём к этом каталогу |
di.GetFiles(mask) |
Формирует список файлов каталога коллекцию объектов типа FileInfo (fi). Каждый элемент коллекции соответствует файлу каталога, заданного объектом di (типа DirectoryInfo). Параметр mask задаёт критерий отбора файлов. |
di.Exists |
Проверяет, существует ли файл в каталоге |
di.Create(di) |
Создает каталог. Если путь к нему указан неправильно, возникает исключение. |
fi.CopyTo(path) |
Копирует файл, заданный объектом fi (типа FileInfo), в каталог и под именем , определённым в параметре path. |
fi.MoveTo(path) |
Перемещает файл, заданный объектом fi (типа FileInfo), в каталог и под именем , определённым в параметре path. |
fi.Delete() |
Уничтожает файл, соответствующий объекту fi (типа FileInfo) |
SreamReader(fn) |
Создаёт и открывает для чтения поток, соответствующий файлу fn. Значение метода – объект типа StreamReader. Поток предусматривает формат UTF-8 (текст в универсальной кодировке) |
SreamReader(fn,encd) |
См. SreamReader(fn). Здесь поток открывается для чтения в кодировке, заданной параметром encd. Для чтения текста в кодировке Windows 1251 параметр encd необходимо инициализировать значением System.Text.Encoding.GetEncoding(1251) |
SreamWriter(fn) |
Создаёт и открывает для записи поток, соответствующий файлу fn. Значение метода – объект типа StreamWriter. Поток предусматривает формат UTF-8 (текст в универсальной кодировке) |
SreamReader(fn, addMode,encd) |
См. SreamWriter(fn). Здесь поток открывается для запиаи в кодировке, заданной параметром encd (объект типа System.Text.Encoding) . Для записи текста в кодировке Windows 1251 параметр encd необходимо инициализировать значением System.Text.Encoding.GetEncoding(1251). Параметр addMode задаёт режим записи: True – добавление в файл, False – перезапись |
Доступ к базе данных -
Сервер базы данных Microsoft SQL Server Compact Edition можно скачать с сайта (бесплатно):
www.microsoft.com/express
Сейчас наиболее распространён класс ADO.NET - это API-библиотека доступа к данным для платформы .NET
Классы, из которых состоит ADO.NET, можно разделить на 2 категории:
conncted - требующие подключения, требующие соединения с БД
disconnected - отключённые, работает с уже загруженными на клиентскую машину данными
К типу connected относятся классы:
Connection
Transaction
DataAdapter
Для осуществления взаимодействия между DataSet и собственно источником данных используется объект типа DataAdapter. Само название этого объекта– адаптер, преобразователь, – указывает на его природу. DataAdapter содержит метод Fill() для обновления данных из базы и заполнения DataSet.
в ADO .NET есть специализированный объ-
ект для выполнения запросов, называемый Command. Под запросами понимает
ся выполнение SQL-конструкций или запуск хранимых процедур. Этот объект среда создает неявным образом в методе InitializeComponent. Данный объект обладает следующими свойствами.
Connection – подключение к базе данных. Можно использовать как суще-
ствующее подключение, так и создавать новое.
CommandType – тип команды (запроса), который будет направляться к базе
данных. Возможны следующие значения:
• Text. Текстовая команда состоит из SQL-конструкции, направляемой к ба-
зе данных. Это значение используется по умолчанию.
• StoredProcedure. Текстовая команда состоит из названия хранимой проце-
дуры.
• TableDirect. Текстовая команда состоит из названия таблицы базы данных.
В результате извлекается все содержимое таблицы. Эта команда анало-
гична текстовой команде SELECT * FROM Название_таблицы. Данная ко-
манда поддерживается только управляемым поставщиком OLE DB.
CommandText – собственно сам текст запроса.
Объект dataAdapter имеет свойство SelectCommand, в котором мы и будем
указывать объект myCommand:
DataAdapter. Это своеобразный шлюз между автономными и подключенными аспектами ADO .NET. Он устанавливает подключение, и если подключение уже установлено, содержит достаточно информации, чтобы воспринимать данные автономных объектов и взаимодействовать с базой данных.
(DataAdapter – SqlDataAdapter, OracleDataAdapter)
В автономных приложениях, созданных с помощью ADO .NET, используют иной подход. Для обеспечения автономности используются объекты DataAdapter. Они осуществляют выполнение запросов, используя для этого объекты подключения. А результаты выполнения, то есть данные, передает автономным объектам.
Благодаря такому принципу автономные объекты не знают о существовании
объектов подключения, так как напрямую не работают с ними. Таким образом, реализация объекта, хранящего данные, не зависит от конкретного поставщика данных, а именно от СУБД. Поскольку конкретная реализация адаптера данных зависит от соответствующего источника данных, конкретные адаптеры данных реализованы в составе конкретных поставщиков.
Command
Parameter
DataReader
OleDbConnection – обеспечивает доступ к база данных
OleDbDataAdapter – обеспечивает доступ к база данных
За подключени к БД отвечают поставщики данных. В dotNet их два:
SQL Client . NET Data Provider - только для Microsoft SQL Server 7 и выше
OLE DB . NET Data Provider- универсальны провайдер, позволяющий подключиться к любой БД, для которой есть поставщик OLE DB. К 2012 г. эти поставщики разработаны практически для всех БД
К типу disconnected относятся классы, работающие на клиентской машине и не требующих соединения с сервером .
Сюда относятся классы:
DataSet – источник данных обеспечивает доступ к база данных
DataSet представляет собой копию таблицы в памяти.
DataSet состоит из объектов типа DataTable и объектов DataRelation. В коде к ним можно обращаться как к свойствам объекта DataSet, то есть, используя точечную нотацию. Свойство Tables возвращает объект типа DataTableCollection, который содержит все объекты DataTable используемой базы данных.
Объект DataSet представляет собой буфер для хранения данных из базы.
Этот буфер предназначен для хранения структурированной информации, представленной в виде таблиц, поэтому первым, самым очевидным вложенным объектом DataSet является DataTable. Внутри одного объекта DataSet может храниться несколько загруженных таблиц из базы данных, помещенных в соответствующие объекты DataTable.
ами) и строк (записей). Для обращения к ним и для управления столбцами
и строками в объекте DataTable предназначены специальные объекты DataColumn и DataRow. Между таблицами могут быть связи – здесь они представлены объектом DataRelation. Наконец, в таблицах есть первичные и вторичные ключи – объект Constraint со своими двумя подклассами UniqueConstraint и ForeighKeyConstraint описывают их. Отметим, что объекты программы и соответствующие объекты базы данных не эквивалентны.
В загруженных таблицах не формируются автоматически все нужные объекты, в некоторых случаях необходимо сделать это самостоятельно. Сами
объекты имеют также довольно тонкую и сложную структуру, поэтому это было бы довольно грубым приближением. Однако, на первых порах, для понимания сути полезно помнить следующие соотношения:
DataSet = <одна или несколько таблиц> = <один или несколько объектов DataTable>.
DataTable = <таблица>.
Рис. 104. Определение уровня транзакции
124
DataTable = <таблица> = <множество полей, столбцов, колонок> =
= <множество объектов DataColumn>.
DataTable = <таблица> = <множество строк> = <множество объектов DataRow>.
DataColumn = <столбец, поле, колонка>.
DataRow = <строка>.
DataRelation = <связь между таблицами>.
DataTable
DataRow
DataColumn
Constraint
DataView
DataGridView – обеспечивает отображение данных, полученных из базы
Класс HashTable
Hashtable – это структура данных, предназначенная для осуществления
быстрого поиска. Это достигается за счет связывания ключа с каждым объектом, который сохраняется в таблице. Hashtable – это объект, в котором хранятся пары значений: так называемый ключ и само значение. Элементы каждой коллекции – и ключей (Keys), и значений (Values) – являются типом object, а это значит, что в качестве индекса элемента в привычном понимании теперь выступает не int, а именно object!
OleDbDataAdapter (или DataAdapter)
- компонент обеспечивает взаимодействие с базой данных. В нижеследующей таблице перечислены свойства компонента, являющиеся объектами типа OleCommand, которые определяют соответствующие SQL-команды (Культин. Основы прогр.MS Visual C#, с196)
Свойство |
Описание |
SelectCommand |
SQL-команда Select, осуществляющая выбор сведений из базы данных |
DeleteCommand |
SQL-команда Delete, осуществляющая удаление сведений из базы данных |
InsertCommand |
SQL-команда INSERT, осуществляющая добавление сведений в базу данных |
UpdateCommand |
SQL-команда Update, осуществляющая обновление сведений в базе данных |
Свойства SelectCommand |
|
SelectCommand.Connection |
|
SelectCommand.CommandText |
|
InsertCommand.CommandText |
|
InsertCommand.Parametres[0].ParametreName |
Name |
InsertCommand.Parametres[0].SourceColumn |
name |
InsertCommand.Parametres[1].ParametreName |
Phone |
InsertCommand.Parametres[2].ParametreName |
|
Методы |
|
Fill() |
Копирование всех данных из результата запроса |
Update() |
Копирование изменений обратно в сервер |
OleDbCommand
- компонент обеспечивает выполнение SQL- команд
Свойство |
Описание |
Connection |
Обеспечивает соединение с базой данных |
CommandText |
SQL-команда |
Parametres |
Коллекция объектов OleDbParametre |
|
|
DataSet
- компонент хранит набор данных, полученных из базы данных
Свойства
Свойство |
Описание |
CaseSesitive |
определяет, должно бы быть сравнение строк независимым от регистра |
DataSetName |
Имя набора данных |
ExtendetProperties |
дополнительные свойства набора данных |
HasError |
определят наличие ошибок в таблицах набор данных |
Local |
информация о региональных настройках, типа формата даты и т.п. |
Relation |
коллекция связей с родительскими и дочерними таблицами |
Tables |
Коллекция объектов DataTable |
Методы
Метод |
Описание |
Fill() |
Копирует результаты запроса в кэш объект DataSet. Имеется 7 перегруженных вариантов Fill, позволяющих копировать не все результаты, а только их часть. Например, код DataAdapter.Fill(DataSet, 100,50,”Spisok”) копирует 50 записей, начиная с 100-й из таблицы Spisok |
DataTable -
экранная таблица, соответствующая файлу базы данных
Свойство |
Описание |
Name |
Имя таблицы. Используется для доступа к таблице , то есть к элементу коллекции Tables объекта dataSet |
Columns |
Коллекция объектов DataTable |
DataGridView
–табличное отображение данных, полученных из базы. Чтобы Grid отобразила данные, надо проинициализировать BindingSource, связанный с ней:
BindingSource bindingSource1= new(BindingSource);
Свойство |
Описание |
DataSource |
Ссылка на источник данных |
DataMember |
Ссылка на данные – таблицу из коллекции Tables компонента DataSet |
Column |
Коллекция объектов, задающих вид столбца |
ReadOnly |
Запрещает изменения в таблице |
AllowsUsersToDeleteRows |
Разрешает удалять строки |
AllowsUsersToAddRows |
Разрешает добавлять строки |
ScrollBars |
Управление полосами прокрутки |
EditMode |
Задаёт режим редактирования таблицы |
AllowsUsersToResizeColumns |
Разрешает изменять ширину колонок при исполнении программы |
AllowsUsersToResizeRows |
Разрешает изменять высоту строк при исполнении программы |
DataGridViewColumn
Свойство Columns компонента DataGridView является коллекцией объектов DataGridViewColumn, определяющих информацию, отображаемую в колонке
Свойство |
Описание |
DataPropertyName |
Имя поля файла базы данных, значение которого отображается в столбце |
HeaderText |
Заголовок столбца |
With |
Ширина столбца |
- - - - - из «C# for dummies» - - - - -
стр 101
за связь с базой данных Access — OleDbConnection. Первый является частью
провайдера данных SQLDataProvider, второй — провайдера данных OLEDbProvider.
Программный код меняется в зависимости от того, с какой базой предстоит работать. Для демонстрации возможностей использования баз данных, работающих под управлением различ ных СУБД, мы создали базу данных Planets в Microsoft SQL Server и в Access. Поскольку формат базы данных в Access 2007 отличается от формата, принятого в предыдущих версиях, реализация выполнена для версий Access 2007 и Access 2003. Естественно, что все особенности построения баз данных находят отражение в программном коде.
При работе с базой данных SQL Server программный код зависит от того, с какой версией СУБД приходится работать — с Microsoft SQL Server или Microsoft SQL Server Express Edition.
В приведенном ниже примере показаны четыре возможных варианта работы:
1. работа с Microsoft SQL Server Express Edition;
2. работа с Microsoft SQL Server;
3. работа с Access 2003;
4. работа с Access 2007.
Три варианта закомментированы, а один готов к использованию, в данном тексте это вариант работы с Microsoft SQL Server. В зависимости от того, что установлено на компьютере читателя, следует нужный вариант раскомментировать, а ненужный — закомментировать.
Из «Visual C# 2008. Базовый курс, Изд. "Диалентика", 2009 , стр 894
Наиболее распространённые классы
ADO.NET
Объекты-поставщики
Connection |
Command |
CommandBuilder |
DataReader |
DatAdapter |
Объекты -потребители
DateSet |
||
|
DataTable |
|
|
|
DataRow |
|
|
DataColumn |
|
DataRelation |
Объекты-поставщики (provider objects) требуют наличия активного соединения с физическим источником данных. Вы используете их для чтения данных, а затем в зависимости от потребностей вы сожжете работать с данными с помощью объектов-потребителей Вы можете также обновлять данные в источнике данных, используя объекты поставщики для записи новых данных обратно в источник..
Таким образом, объекты-потребители работают в автономном (отключённом) режиме. Вы можете работать с данными в памяти даже тогда, когда соединение с базой данных закрыто. (Далее стр 895 F:\Books_C#\Watson)