Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 305

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 299 300 301 302 303 304 < 305 > 306 307 308 309 310 311 .. 404 >> Следующая


// И выводится следующая строка Console.WriteLine (e,Value);

// После чего SQL завершается.

Console.WriteLine (*)¦);

Console.WriteLine ("GO*);

Console .WriteLine 0;

)

Этот код отражает переданный тип и осуществляет поиск атрибута Database-Table. Если удается обнаружить атрибут DatabaseTable, то на консоль выводится посылка create table, в которую включено название таблицы, содержащееся в атрибуте.

Затем мы проходим в цикле все свойства данного типа, дня того чтобы найти все атрибуты DatabaaeCoiumn, Любое свойство, обладающее таким атрибутом, превращается в столбец генерируемой таблицы:

foreach ( Propertylnfo prop in t.GetPropertiea ())

; •

object!) columnAttributes « prop.GetCustomAttributee

(typeof (DatabaseColumnAttribute) , true)j

Строковое представление столбца создается посредством представленного ниже вызова метода ConvertDataType (). Это представление хранится в отсортированном семействе, поэтому столбцы генерируются на основании значения свойства order данного атрибута.

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

foreach (DictionaryEntry е in columns)

Console.WriteLine (e.Value)I

В завершение мы добавляем закрывающую скобку в команду go, что с точки зрения SQL Server означает необходимость выполнить группу операторов и тем самым создать таблицу.

Последняя функция данного модуля преобразовывает значения из перечислимого типа coiumnDomain в конкретный тип данных для используемой базы данных. Кроме того, для строковых столбцов мы создаем представление столбца, в которое входит его размер; так, напрнмер, свойство name из начального базового класса создается а виде varchah(64). Такой тип представляет собой массив символов переменной длины, не превышающей 64 символов.
652

Глава 22

И Извлечение из файла DatabaseAttributes.ca /// <summary>

III Преобразование ColumnDomain в тип данных SQL Server /// </вшяаагу>

III <param name» ^са"> Атрибут столбца</рагапо /// <retums>CTpoxoBoe представление типа даныых</returns» private static string CanvertDataTYpe (DatabaeeColumnAttribute dca) (

string dataType c null;

switch (dca.DataType)

(

case ColumnDomain.DateTime;

dataType

break;

'DATETIME* |

case ColumnDomain. Integer:

dataType * 'IИГ'; break;

case ColumnDomain.Longt

dataType » 'ВЮ1ЯТ'; break ; '

case ColumnDomain.String;

// включение размера строки. .. dataTyi » string.Format ( 'VARCHAR((0}>1 break i

dca.Size ) ;

return dataType;

)

Для каждого члена перечислимого типа мы создаем строку столбца, предназначенную для SQL Server. В данном примере это приводит к созданию SQL для классов Author н Book, как показано ниже:

CREATE TABLE AUTHOR (

AUTHORED

NAME

DESCRIPTION

HIRE_DATE

)

GO

CREATE TABLE AUTHOR (

HOOK^ID

AUTHORED

NAME

DESCRIPTION

PUBLISH_DATE

ISBN

BIGINT VARCHAR(64) VARCHAR(1000) DATETIME

BIGIWT BIGIWT VABCHAR(64) VARCHAR(1000 I DATETIME VARCHAR(10)

NOT NULL, NOT NULL, NULL, NULL,

NOT NULL, NOT NULL, NOT NULL, NULL, NULL, NULL.

)

GO
Атрибуты

653

Этот SQL может быть запущен для пустой или заранее существующей базы данных SQL Server с целью создания данных таблиц. Созданные классы DataRow могут быть использованы для обеспечения безопасного с точки зрения используемых типов доступа к данным, находящиеся в этнх таблицах.

ДЛЯ ТОГО ЧТОбы иметь ВОЗМОЖНОСТЬ ВОСПОЛЬЗОВаТЬСЯ ПРОИЗВОДНЫМИ ОТ DataRow

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

И Извлечение из файла DetabaseAttributes .сэ III <aumnary>

III Основной класс таблицы с данными III </summary>

public class MyDataTabie ; DataTabie (

III <summairy> ,

III Создание объекта на базе класса DataRow III </9uiranary>

III tparam name=¦ rowType¦ >Класс, производный от класса DataRow</param> public MyDataTable (System.Type rowType)

(

m_rowType = rowType;

ConstruetColurcns ();

> .

Ill <summary>

III Создание столбцов DataColumn для данной таблицы III </sumznary>

private void ConstructColumna ()

( .

SortedList columns * new SortedList Of -

И Просмотр в чикле всех войств

foreach (PropertyInfо prop in m_rowType.GetProperties ())

object[] golumnAttributes - prop.GetCustomAttributes

(typeof (DatabaseColumnAttribute) , true);

П Если у данного'свойства есть атрибут DatabaseColumnAttribute if (columnAttributes .Length =*= 1)

DatabaseColumnAttribute dca = columnAttributes[0]

as DatabaseColumnAttribute;

П Создание DataColumn

DataColumn dc = new DataColumn (dca .ColumnName , prop. Property'type) ;

II Присваивание значения его флажку, отвечающему за значение null dc.AllowDBNull ж ilea.Nullable ;

П И включение его во временное семейства столбцов columns.Add (dca.Order , dc);
Предыдущая << 1 .. 299 300 301 302 303 304 < 305 > 306 307 308 309 310 311 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.