Автор работы: Пользователь скрыл имя, 23 Сентября 2013 в 11:04, курсовая работа
Structured Query Language представляет собой непроцедурный язык, используемый для управления данными реляционных СУБД. Термин <непроцедурный> означает, что на данном языке можно сформулировать, что нужно сделать с данными, но нельзя проинструктировать, как именно это следует сделать.
Что такое динамические страницы HTML и чем они отличаются от статических. Статическая страница содержит код на языке гипертекстовой разметки HTML. Когда автор страницы пишет ее, он определяет, как будет выглядеть страница для всех пользователей. Содержание страницы будет всегда одинаковым, независимо от того, кто и когда решит ее просмотреть. Языка HTML вполне достаточно для отображения информации, которая редко изменяется и не зависит от того, кто ее просматривает. Страница HTML — простой ASCII-текст, следовательно, клиент может работать в любой операционной системе.
Динамическая web-страница должна быть создана "на лету" программой, исполняющейся на интернет-сервере. Широко применяется механизм шлюзов CGI (Common Gateway Interface). Вначале пользователь получает статическую страницу с формой. Вам известно, что в теге FORM существует атрибут ACTION. Именно он задает адрес (URL) исполняемого приложения. На сервере находятся исполняемые файлы программ, написанных, например, на C/С++ или Delphi, которые по протоколу HTTP принимают данные из входного потока или из переменных окружения и записывают в стандартный выходной поток готовую страницу.
Пользователю в ответ на запрос посылается HTML-код, который был специально сгенерирован для него. Это может быть, например, результат поиска в поисковой системе. CGI-скрипты могут быть написаны на интерпретируемом языке (Perl) или даже скрипте командной строки. Входной и выходной потоки переназначаются. На вход интернет-сервер принимает данные, введенные пользователем. После обработки полученных данных пользователю возвращается результирующая страница. При исполнении cgi-программа загружается в память сервера, а при завершении — удаляется. Когда 100 клиентов одновременно обращаются к серверу, в памяти создаются 100 процессов, для размещения кода каждого из которых нужна память. Это отрицательно сказывается на масштабируемости. Напомним, что масштабируемость — это возможность плавного роста времени ответа программной системы на запрос с ростом числа одновременно работающих пользователей. Для решения этой проблемы Microsoft была предложена альтернатива — ISAPI (Internet Server Application Programming Interface) расширения и фильтры. Вместо исполняемых файлов используются DLL-библиотеки. Код DLL находится в памяти все время и для каждого запроса создает не процессы, а нити исполнения. Все нити используют один и тот же программный код. ISAPI-приложение выполняется в процессе IIS-сервера. Это позволяет повысить производительность и масштабируемость.
ASP .NET — это не продолжение ASP. Это концептуально новая технология Microsoft, созданная в рамках идеологии .NET. В ASP .NET заложено все для того, чтобы сделать весь цикл разработки web-приложения более быстрым, а поддержку — более простой. ASP .NET основана на объектно-ориентированной технологии, но сохранила модель разработки asp: вы создаете программу и помещаете ее в директорию, выделенную сервером, и она будет работать. В ASP .NET появилось много новых функций, а существовавшие ранее в asp значительно усовершенствованы.
В ASP .NET используются компилируемые языки. Во время компиляции проверяется синтаксическая корректность исходного текста. Скомпилированный в промежуточный язык код выполняется быстрее, и он будет таким же независимо от языка, который мы используем. Компилируемые языки поддерживают строгую типизацию.
В ASP .NET используются компилируемые языки. Во время компиляции проверяется синтаксическая корректность исходного текста. Скомпилированный в промежуточный язык код выполняется быстрее, и он будет таким же независимо от языка, который мы используем. Компилируемые языки поддерживают строгую типизацию.
Компиляция происходит на сервере в момент первого обращения пользователя к странице. Если программист изменил текст страницы, программа перекомпилируется автоматически. При написании кода можно использовать набор компонентов, поставляемых с .NET.
Платформа .NET Framework предоставляет приложениям среду выполнения, сама непосредственно взаимодействуя с операционной системой. Выше лежит интерфейс ASP .NET-приложений, на котором в свою очередь базируются web-формы (ASP .NET-страницы) и web-сервисы. Интерфейс .NET Framework позволяет стандартизировать обращение к системным вызовам и предоставляет среду для более быстрой и удобной разработки. CLR обеспечивает единый набор сервисов для всех языков.
ASP .NET использует технологию доступа к данным ADO .NET, которая обеспечивает единый интерфейс для доступа к базам данных SQL Server и файлам XML. Кроме того, усиленная модель безопасности позволяет обеспечивать защиту клиента и сервера от несанкционированного доступа.
Данные из форм обычно записываются в базы данных, и тип информации в них должен соответствовать типу и длине данных в полях таблиц баз данных. Кроме того, иногда нужно вводить взаимосвязанные данные, например, пароль во время регистрации нужно вводить 2 раза и он в обоих полях должен совпадать. Некоторые хакеры пытаются вводить в формы программные коды, чтобы взломать вашу систему.
Прежде чем работать с данными, нужно убедиться, что:
Проверка может происходить и на стороне клиента, и на сервере. При валидации на стороне клиента в страницу встраивается код на Javascript. Если данные в форме не проходят проверку, страница просто не будет отправлена на сервер. Таким образом мы избежим лишнего трафика и не будем загружать сервер. С другой стороны, валидация на стороне сервера более надежна. Javascript-код хакеры могут легко посмотреть и отправить неправильные данные, которые пройдут эту проверку. Наконец, Javascript можно просто выключить в настройках браузера. При валидации на стороне сервера данные проверяются программой на полноценном языке. Ее код пользователю неизвестен. В результате проверки генерируется новая страница с сообщениями об ошибках. Самая разумная стратегия — применять комбинацию этих методов. Предварительная проверка у клиента защитит от опечаток, а серьезная проверка на сервере — от злонамеренного взлома.
Существует целый ряд
серверных элементов
Классы валидаторов образуют иерархию, во главе которой стоит абстрактный класс BaseValidator.
Соединение в ADO.NET может
происходить с помощью
Классы ADO .NET объединены в несколько пространств имен.
System.Data — это ядро ADO .NET. Оно содержит классы, необходимые для связи посредством любых провайдеров данных. Эти классы представляют таблицы, строки, столбцы, DataSet (множество взаимосвязанных таблиц). Там определены интерфейсы (в смысле языка C#) соединений с базами данных, команд, адаптеров данных.
System.Data.Common — базовые классы для всех провайдеров данных — DbConnection, DbCommand, DbDataAdapter.
В System.Data.OleDb находятся классы, позволяющие работать с источниками данных OleDb, в том числе с MS SQL версии 6.0 и ниже. Там находятся такие классы, как OleDbConnection, OleDbDataAdapter и OleDbCommand.
System.Data.Odbc содержит классы, которые работают с источниками данных ODBC посредством провайдера .NET ODBC. Классы имеют аналогичные имена с префиксом Odbc.
System.Data.SqlClient. Здесь определен провайдер данных для СУБД SQL Server версии 7.0 и выше. Содержатся классы SqlConnection, SqlTransaction, SqlCommand и другие.
В System.Data.SqlTypes находятся классы, представляющие типы данных СУБД SQL Server.
Классы ADO .NET делятся на 3 типа. Классы типа Disconnected определяют базовую структуру данных, например, DataTable. Они независимы от каких-либо провайдеров данных и могут создаваться и заселяться данными непосредственно в программе. Классы Shared — базовые и общие для всех провайдеров. Классы Data Provider — специфические для разных провайдеров.
Аббревиатура SQL расшифровывается как structured query language, «язык структурированных запросов». SQL не является полноценным языком программирования; он представляет собой подъязык данных(data sublanguage). В нем имеются операторы только для создания и обработки баз данных. Однако операторы SQL можно встраивать в программы на сценарных языках, например VBScript, или универсальных языках программирования, таких как Java или C#; таким образом , в реальности ограниченность возможностей SQL не представляет проблемы.
С помощью SQL можно определять структуры базы данных, а также запрашивать и обновлять информацию в базе данных. Совокупность команд, служащих для определения данных, называют иногда языком определения данных (data definition language, DML), а совокупность команд для обновления и запроса данных – языком манипулирования данными (data manipulation language, DML).
С помощью SQL можно создавать и модифицировать структуры баз данных. Таблицы создаются с помощью оператора CREATE TABLE. Иногда вместе с оператором CREATE TABLE используется оператор ALTER для указания первичных и вторичных ключей.
Основная функция этого оператора – создание новой таблицы и описание её столбцов и типов данных. Кроме того, этот оператор позволяет определять первичные ключи с некоторыми ограничениями ссылочной целостности, а также задавать ограничения на столбцы и таблицы.
Для примера – таблице дано имя ПРОЕКТ. В скобках приведены определения четырех столбцов. Определение каждого столбца состоит из трех частей: имени столбца, его типа данных и необязательных ограничений на этот столбец. Как и все операторы SQL, оператор CREATE TABLE завершается точкой с запятой.
Листинг 2.1. базовый формат оператора CREATE TABLE
CREATE TABLE ПРОЕКТ
(ИдПроекта Integer Primary Key,
Название Char(25) Unique Not Null,
Отдел VarChar(100) Null,
МаксТрудозатраты Numeric(6.1)
В листинге 2.1 столбец ИдПроекта принадлежит к типу данных Integer (целочисленный) и имеет свойство Primary Key. Следующий столбец, Название имеет тип данных Character (строковый) с максимальной длиной 25 символов. Поскольку этот столбец является альтернативным ключом, в его определение были добавлены ключевые слова Unique Not Null. Они означают, что значения столбца Название являются уникальными в таблице ПРОЕКТ и что этот столбец обязан иметь значение.
Третий столбец, Отдел , принадлежит к типу данных VarChar(100) и имеет свойство Null. VarChar обозначает строку переменной длины. Таким образом, в разных строках значения столбца Отдел могут различаться по длине, и максимально возможная длина строки равна 100 символам. Ключевое слово Null указывает на то, что пустые символы допустимы.
Четвертый столбец таблицы ПРОЕКТ, МаксТрудозатраты, имеет тип данных Numeric(6.1). Это означает число из шести цифр с одной цифрой после десятичной точки. (Десятичная точка не хранится и поэтому не считается за цифру.). Так, например, хранимое в этом столбце значение 123456 будет отображаться СУБД в виде 12345.6. По умолчанию, поскольку не указано иного, столбцу МаксТрудозатраты присваивается свойство Null. Запись Default 100 указывает, что при создании новой строки в таблице ПРОЕКТ столбцу МаксТрудозатраты необходимо присвоить начальное значение, равное 100.
Создав таблицу, можно записывать в нее данные, менять их значения и удалять данные из таблицы. Данные можно также запрашивать различными способами.
Следующий оператор запросит (прочтет) три из четырех столбцов таблицы ПРОЕКТ:
Листинг 2.2
select Название, Отдел, МаксТрудозатраты
from ПРОЕКТ;
Имена запрашиваемых столбцов перечисляются после ключевого слова SELECT , а имя отношения, из которого считываются данные, указывается после ключевого слова FROM. Результатом этого оператора при использовании данных из таблицы ПРОЕКТ будет следующая таблица:
КВ3 Анализ портфеля Финансы 75.0
КВ3 Подготовка налогового отчета Бухгалтерия 145.0
КВ4 Планирование номенклатуры изделий Маркетинг 138.0
КВ4 Анализ портфеля Финансы 110.0
Результатом работы оператора SELECT всегда является отношение. Этот оператор берет одно или несколько отношений, манипулирует ими определенным образом и выдает на выходе одно отношение. Даже если результатом является всего лишь одно число, это число рассматривается как отношение , имеющее одну строку и один столбец.
Порядок столбцов в результирующей таблице определяется порядком следования их имен после ключевого слова SELECT. Если изменить порядок имен столбцов в операторе SELECT следующим образом:
Листинг 2.3
select Название, МаксТрудозатраты, Отдел
from ПРОЕКТ;
Результатом работы оператора будет таким:
КВ3 Анализ портфеля 75.0 Финансы
КВ3 Подготовка налогового отчета 145.0 Бухгалтерия
КВ4 Планирование номенклатуры изделий 138.0 Маркетинг
КВ4 Анализ портфеля 110.0 Финансы
Запросы приведенные выше выбирают определенные столбцы всех строк таблицы. Кроме этого можно выбрать все столбцы определенных строк. Например, следующий оператор запрашивает все столбцы из тех строк таблицы ПРОЕКТ, которые содержат сведения о проектах финансового отдела:
Листинг 2.4.
SELECT ИдПроекта, Название, Отдел, МаксТрудозатраты
FROM ПРОЕКТ
WHERE Отдел = 'Финансы';
Результат имеет следующий вид:
1000 КВ3 Анализ портфеля Финансы 75.0
1500 КВ4 Анализ портфеля Финансы 110.0
Шаблон SELECT/FROM/WHERE - является фундаментальным шаблоном построения SQL-операторов SELECT. В предложении WHERE могут содержаться различного рода условия. Например, следующий запрос извлекает все столбцы тех строк таблицы ПРОЕКТ, где значение столбца МаксТрудозатраты превышает 100: