Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Внедрение SQL-операторов в прикладные программы
Обращение к базе данных с использованием технологии ADO
Технология Active Data Objects (ADO) - это программное расширение технологии активных серверных страниц ASP, реализованное в Web-сервере Internet Information Server (IIS) компании Microsoft с целью организации подключений к базам данных. В технологии ADO поддерживаются следующие основные функции:
- независимо создаваемые объекты;
- поддержка хранимых процедур с входными, выходными и возвращаемыми параметрами ;
- курсоры различных типов (включая возможность поддержки разных специальных курсоров конечных пользователей);
- пакетное обновление;
- поддержка ограничений для числа возвращаемых строк или других параметров запроса;
- поддержка нескольких наборов данных, возвращаемых хранимыми процедурами или пакетными операторами.
Основными преимуществами технологии ADO является простота использования, высокая скорость, небольшие потребности в оперативной памяти и незначительные затраты дисковой памяти.
Объектная модель ADO определяет набор ( коллекцию ) программируемых объектов, которые могут применяться с Visual Basic, Visual C++, VBScript. Объектная модель ADO разработана для выполнения большинства особенностей интерфейса OLE DB.
Если при помощи интерфейса ODBC операционная система осуществляет, как правило, доступ к реляционным БД, использующим структурированный язык запросов SQL, то интерфейс OLE DB (Object Linking and Embedding for DataBases) является более универсальной технологией для доступа к любым источникам данных.
В интерфейс OLE DB включен механизм провайдеров, под которыми понимаются поставщики данных, находящиеся в надстройке над физическим форматом данных. Их называют сервис-провайдерами, они помогают объединять в однотипную совокупность объекты, связанные с разнообразными источниками данных.
Интерфейс OLE DB может использовать для доступа к источникам данных интерфейс ODBC. В этом случае применяется провайдер OLE DB для доступа к ODBC-данным. Таким образом, интерфейс OLE DB не заменяет интерфейс ODBC, а позволяет организовать доступ к источникам данных через различные интерфейсы, и в том числе через ODBC.
ADO содержит семь объектов, которые инкапсулируют в себе большинство операций с базой данных - Connection ( соединение ), Command ( команда ), Parameter ( параметр ), Recordset ( набор данных ), Field (поле), Property (свойство) и Error (ошибка), - а также четыре набора объектов ( коллекции ) - Fields (поля), Properties (свойства), Parameters ( параметры ) и Errors (ошибки).
Объект Connection устанавливает коммуникационную связь между приложением и источником данных, позволяет выполнять команды. Класс Connection включает следующие методы:
- Open ( Close ) - установление (закрытие) физического соединения с источником данных;
- Execute - выполнение команды для этого соединения ;
- BeginTrans, CommitTrans, RollbackTrans - управление транзакциями для текущего подключения, включая вложенные транзакции, если источник данных поддерживает работу с ними.
Объект Command. Команда, направляемая в базу данных, как правило, представляет собой SQL-команду или вызов некоторой хранимой процедуры. Объект Command может настраиваться с помощью параметров, задаваемых посредством создания коллекции объектов класса Parameter. Класс Command включает следующие методы:
- Execute - выполнение команды для данного соединения ;
- CreateParameter - создание нового объекта класса Parameter.
Коллекция Parameters. Содержит любые параметры, которые используются вместе с данным объектом Command. Класс Parameters содержит следующие методы:
- Append ( Delete ) - добавление (удаление) параметра для указанной коллекции ;
- Item - извлечение определенного объекта Parameter.
На некоторый объект Parameter в коллекции Parameters можно ссылаться, используя его порядковый номер или значение, присвоенное свойству Name этого объекта.
Объект Recordset представляет набор записей, полученный в результате выполнения запроса в базе данных. При создании объекта Recordset указатель текущей записи устанавливается на его первую запись (если таковая имеется), а свойствам BOF и EOF присваивается значение FALSE. Если никаких записей нет, то свойству Recordcount присваивается значение 0, а свойствам BOF и EOF - значение TRUE. Класс Recordset включает следующие методы:
- MoveFirst, MoveLast, MoveNext, MovePrevious и Move - производят перемещение указателя текущей записи в предположении, что провайдер поддерживает выполнение соответствующей функции. В однонаправленных объектах Recordset поддерживается только метод MoveNext. При использовании указанных методов для перемещения по записям результирующего набора для обнаружения его начала и конца могут применяться свойства BOF и EOF объекта Recordset ;
- AddNew, Update, Delete - осуществляют добавление новых записей, обновление и удаление имеющихся записей, связанных с открытым объектом;
- Open ( Close ) - выполняют открытие (закрытие) курсора, представляющего результаты выполнения команды.
Коллекция Fields. Объект Recordset содержит коллекцию Fields, состоящую из объектов класса Field, каждый из которых соответствует столбцу данных объекта Recordset. Как и при работе с объектами Parameter, на отдельный объект Field в коллекции Fields можно ссылаться, используя его порядковый номер или имя.
Объект Connection
Рассмотрим возможность соединения с базой данных из языков сценариев.
ASP -сценарий, работающий с базой данных, в первую очередь должен подключиться к ней. После этого можно выполнять инструкции SQL и создавать наборы записей. Существует специальный объект Connection, управляющий подключением к базе данных.
Объект Connection позволяет устанавливать сеансы связи с источниками данных; он обеспечивает функционирование механизма для инициализации и установления соединения, выполнения запросов и использования транзакций.
Создание соединения с базой данных включает следующие шаги:
- сначала вызывается метод CreateObject() объекта Server, создающий объектную переменную cn типа Connection. Объект Connection определен в библиотеке ADODB:
Dim cn Set cn=Server.CreateObject("ADODB.Connection")
- далее можно использовать метод Open объекта Connection для установки соединения c провайдером ODBC. Провайдер определяется посредством установки свойства Provider. Если оно не определено, то по умолчанию будет использован провайдер MSDASQL - это сокращенное название драйвера OLE DB Microsoft для SQL Server:
cn.provider "MSDASQL"
- затем вызывается метод Open() объекта Connection, открывающий соединение с заданным источником данных.
Сослаться на базу данных SQL Server из ASP -сценария возможно двумя способами:
В первом случае созданный заранее источник данных с именем mystud используется для соединения с базой данных следующим образом:
cn.open "mystud","user1","123"
Здесь для метода Open указывается DSN базы данных, имя пользователя и пароль.
Во втором случае строки соединения содержат всю информацию, необходимую ADO для того, чтобы создать соединение с внешним источником данных. Пример такой строки:
"uid=user1;driver={SQL Server};server=its; database=basa_user1"
Строка создает соединение с базой данных basa_user1 на MS SQL Server с именем its, используя драйвер для SQL Server и имя пользователя user1. Если нужен пароль, то необходимо добавить подстроку pwd=<пароль>:
"uid=user1;pwd=123;driver{SQL Server}; server=its; database=basa_user1"
Такая строка подойдет для соединения с базой данных в тексте сценария вместо источника данных:
cn.open "uid=user1;driver={SQL Server}; server=its; database=basa_user1"
или
cn.open "uid=user1; pwd=123; driver={SQL Server}; server=its;database=basa_user1"
Опустив некоторые подробности работы с API-интерфейсом, приведем небольшой фрагмент сценария на языке VBScript для серверной стороны, выполняющий выборку и изменение информации в базе данных учебного примера.
Dim cn Dim rst Set cn=Server.CreateObject("ADODB.Connection") Set rst=Server.CreateObject("ADODB.Recordset") cn.open "uid=user1;pwd=123; driver={SQL Server}; server=its;database=basa_user1" rst.open "SELECT название, тип, цена FROM товар", cn do until rst.eof response.write rst.fields(0) response.write rst.fields(1) response.write rst.fields(2) & "<br>" rst.movenext loop18.3. Выполнение статического SQL-запроса к учебной базе данных из VBScript-сценария.
Пример 18.4. Выполнение динамического SQL-запроса к учебной базе данных из VBScript-сценария.
Для создания динамического запроса изменения данных на сервере воспользуемся объектом Command с параметрами.
Dim cn Dim rst Dim cmd Set cn=Server.CreateObject("ADODB.Connection") Set rst=Server.CreateObject("ADODB.Recordset") Set cmd=Server.CreateObject("ADODB.Command") cn.open "uid=user1;pwd=123; driver={SQL Server}; server=its;database=basa_user1" Set cmd.ActiveConnection=cn Dim prm1, prm2 ' создание параметров prm1=Server.CreateObject("ADODB.Parameter") prm2=Server.CreateObject("ADODB.Parameter") ' определение динамического запроса cmd.CommandText="update товар set цена=? where название=?" cmd.CommandType=adCmdText cmd.Prepared=True ' определение параметра, соответствующего ' первому знаку ? в SQL-запросе Set prm1=сmd.CreateParameter("par1", adInteger, adParamInput, , 160) ' определение параметра, соответствующего ' второму знаку ? в SQL-запросе Set prm2=сmd.CreateParameter("par2", adChar, adParamInput,20 , "Трюфели" ) ' добавление параметров в коллекцию параметров cmd.Parameters.Append prm1 cmd.Parameters.Append prm2 ' выполнение SQL-запроса cmd.Execute18.4. Выполнение динамического SQL-запроса к учебной базе данных из VBScript-сценария.