Лабораторная работа Основы разработки с sql azure



страница1/9
Дата11.07.2014
Размер0.84 Mb.
ТипЛабораторная работа
  1   2   3   4   5   6   7   8   9

PBC202ILL

Лабораторная работа

Основы разработки с SQL Azure



СОДЕРЖАНИЕ

Обзор 2

SQL Azure является реализацией СУБД Microsoft SQL Server для Windows Azure. Работа с SQL Azure будет достаточно простой для большинства разработчиков, поскольку поддерживается большая часть инструментов и способов разработки, доступных при использовании SQL Server. 2

Тем не менее, между SQL Azure и SQL Server существуют некоторые отличия. Некоторые из них связаны с архитектурными особенностями SQL Azure, в то время как причиной других является относительная новизна продукта. 2

В ходе данной лабораторной работы вы познакомитесь с некоторыми аспектами администрирования SQL Azure – добавлением учетной записи, созданием и управлением базой данных. Вы создадите простое приложение для Windows Azure, позволяющее управлять записями в таблице Contact базы данных, работающей под управлением SQL Azure. 2

В данной лабораторной работе вы: 2

Для выполнения данной лабораторной работы вам потребуется наличие: 3



Внимание: данная работа должна выполняться с последней версией инструментария Windows Azure Tools for Visual Studio 2010 (версия 1.4) и описывает работу с административным порталом Windows Azure Platform Management Portal. 3

Вам потребуется наличие учетной записи для доступа к SQL Azure. Для самостоятельной регистрации посетите сайт http://www.microsoft.com/windowsazure/sqlazure/. 3

[Данная процедура была выполнена для вас] 3

Для вашего удобства большая часть кода представлена в виде фрагментов (code snippets), зарегистрированных в Visual Studio. Чтобы проверить наличие требуемых для выполнения работы компонентов и установить фрагменты кода: 3

Откройте Проводник Windows (Windows Explorer) и перейдите в каталог Source\Setup. 4

Дважды щелкните на файле Dependencies.dep для запуска утилиты Dependency Checker, используя которую, установите фрагменты кода и недостающие компоненты. 4

В случае появления диалога User Account Control, подтвердите необходимость продолжения выполнения. 4

Внимание: данная операция требует повышения полномочий. Расширение .dep используется утилитой Dependency Checker. Для получения дополнительной информации об использовании утилиты обратитесь к документу Setup.docx, находящемуся в подкаталоге Assets в каталоге с материалами к данной работе. 4

В течение выполнения всей лабораторной работы вы будете добавлять в проект фрагменты кода. Для вашего удобства большая часть таких фрагментов оформлена в виде зарегистрированных в Visual Studio фрагментов, что позволяет добавлять их, а не вводить вручную.

4

Если вы не знакомы с концепцией использования фрагментов кода в Visual Studio, обратитесь к документу Setup.docx, находящемуся в подкаталоге Assets в каталоге с материалами к данной работе. 4

Данная лабораторная работа включает следующие упражнения: 4

Приблизительное время выполнения данной работы: 60 минут. 5

Внимание: при первом запуске Visual Studio вам будет предложено выбрать один из имеющихся наборов настроек. Каждый набор ориентирован на определенный стиль разработки и определяет схему размещения окон, поведение редакторов, перечень доступных фрагментов кода и другие настройки. Описанные ниже действия расчитаны на использование набора настроек под названием «General Development Settings». Если вы выберете другой набор настроек, порядок выполнения тех или иных действий может отличаться от описанного. 5

Упражнение 1: Подготовка учетной записи SQL Azure 5

В данном упражнении вы подключитесь к SQL Azure с использованием учетной записи, создадите сервер БД и добавите пользователя. Затем вы повторно подключитесь к SQL Azure, чтобы начать работу с созданной базой данных. 5



Задача 1 – создание и настройка сервера в SQL Azure 5

В этом упражнении вы подключитесь к административному порталу SQL Azure с использованием имеющейся учетной записи. 5



Перейдите на портал Windows Azure, располагающийся по адресу https://windows.azure.com. 5

Войдите в систему, используя учетную запись Windows Live. 5

6



Рисунок 6

Подключение к административному порталу Azure Services с использованием учетной записи Windows Live 6

На стартовой странице портала Windows Azure, щелкните по кнопке New Database Server. 6

6

Рисунок 6

Создание сервера БД в SQL Azure 6

Если вы ранее не создавали сервер БД, выполните эту процедуру, иначе можете пропустить это упражнение. 7

Чтобы создать сервер, выберите подписку из списка в левой панели. Нажмите кнопку Create на панели Server. 7

7



Рисунок 3 7

Создание сервера БД в SQL Azure 7

Выберите расположение из выпадающего списка Region, затем нажмите кнопку Next. Данная настройка определяет, где географически будет расположена база данных. 7

8



Рисунок 8

Выбор места размещения БД 8

Введите имя и пароль администратора и нажмите кнопку Next. 8

8

Рисунок 8

Ввод имени и пароля администратора БД 8

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

Пароль должен удовлетворять приведенным ниже требованиям. 9

9

Нажмите кнопку Finish для завершения создания сервера. Правила брандмауэра вы настроите далее в этом упражнении. 9

9

Рисунок 9

Диалог настройки правил брандмауэра 10

После завершения будет отображена подробная информация о созданном сервере. 10

10

Рисунок 10

Информация о серверах SQL Azure 10

Внимание: информация о сервере, в том числе, содержит его полное доменное имя в формате: 10

.database.windows.net 10



где указывает на физический сервер, например, a9ixtp7pux.database.windows.net. 10

Раскройте узел подписок на левой панели и щелкните на имени добавленного сервера. Страница Server Information позволяет управлять основными настройками сервера. 10

10

Рисунок 10

Страница свойств сервера БД SQL Azure 11

Раскрывающийся список Firewall Rules позволяет указать перечень IP-адресов компьютеров, имеющих возможность подключения к SQL Azure Server. По умолчанию все подключения запрещены, поэтому обязательно настройте список доступа, чтобы клиенты могли подключаться к серверу. 11

11

Рисунок 11

Настройка правил брандмауэра SQL Azure 11

Внимание: для применения правил брандмауэра может потребоваться некоторое время. 11

Вы создали сервер БД и настроили его для выполнения следующих шагов лабораторной работы. Подключиться к работающей в SQL Azure базе данных можно из любой точки земного шара. 11



Упражнение 2: Выполнение DDL и DML запросов 11

В этом упражнении вы добавите базу данных, создадите ее структуру – несколько таблиц и индексов, после чего выполните ряд запросов к данным. Для работы вы сможете воспользоваться двумя инструментами. Первый - Database Manager for SQL Azure – доступный из административного портала Windows Azure веб-интерфейс на основе Silverlight. Второй инструмент – это давно знакомый и привычный SQL Server Management Studio. Вы увидите, что он одинаково полезен и для управления базами данных SQL Azure. 11



Задача 1 – создание новой базы данных 12

В левой панели административного портала Windows Azure выберите Database. 12

В левой панели найдите узел Subscriptions, последовательно разверните проект, выберите имя интересующего вас сервера, после чего нажмите кнопку Create на панели инструментов Database. 12

12

Рисунок 12

Создание новой базы данных 12

12



В диалоговом окне Create Database укажите имя базы данных (поле Database name) - например HoLTestDB (в примерах ниже предполагается, что база данных называется так), выберите издание (Edition) Web Edition и установите максимальный размер базы данных (поле Maximum size) равным 1 GB. 12

13



Рисунок 13

Свойства создаваемой базы данных 13

Внимание: в данной лабораторной работе вы создаете базу данных с помощью административного портала SQL Azure. Кроме того, поддерживается DDL-конструкция языка T-SQL CREATE DATABASE, позволяющая указать редакцию базы данных (Web или Business) и ее максимальный размер. Например, чтобы создать базу данных редакции Business, максимальный размер которой равен 30GB, следует воспользоваться следующей командой T-SQL: 13

CREATE DATABASE HolTestDB (MAXSIZE = 30GB) 13



После достижения базой данных максимального размера добавление в нее записей становится невозможным до удаления части данных. 13

Задача 2 – управление базой данных с помощью Database Manager for SQL Azure 13

В этой задаче вы воспользуетесь инструментом Database Manager for SQL Azure, веб-приложением на основе Silverlight, для подключения к созданной базе данных, создания и заполнения данными таблицы и последующего запроса ее содержимого. 13



Разверните узел сервера в левой панели, выберите базу данных HoLTestDB и нажмите кнопку Manage на панели инструментов. 13

14

Рисунок 14

Управление базой данных 14

На странице входа введите имя учетной записи и пароль и нажмите кнопку Connect. 14

14

Рисунок 14

Ввод реквизитов для входа в утилиту Database Manager 15

Дождитесь подключения к базе данных и отображения начальной страницы. 15

15

Рисунок 15

Утилита Database manager. Начальная страница 15

В группе Operations на панели инструментов нажмите New Table. 15

15

Рисунок 15

Создание таблицы 15

В интерфейсе создания таблицы установите ее имя (поле Name) в People. 16

Нажимая кнопку + Column, добавьте три столбца, как показано в таблице ниже. 16

16

Рисунок 16

Определение схемы таблицы 16

Нажмите кнопку Save, находящуюся в группе Operations панели инструментов. 16

16

Рисунок 16

Сохранение схемы таблицы 16

После сохранения таблицы нажмите кнопку Data в группе Context панели инструментов. 16

Нажимая кнопку + Row, добавьте записи в таблицу. Значения для колонок Name и Age возьмите из приведенной ниже таблицы. 17

17

Рисунок 17

Добавление строк в таблицу 17

Повторите предыдущий шаг для добавления всех записей, после чего сохраните данные нажатием кнопки Save в группе Operations панели инструментов. 17

Далее перейдите к закладке Database (в верхнем левом углу страницы) и нажмите кнопку New Query в группе Operations панели инструментов. 17

В окне запроса введите следующее выражение T-SQL, извлекающее все строки из таблицы People и нажмите кнопку Execute в группе Run панели инструментов. Убедитесь в том, что результат содержит предварительно введенные вами записи. 17

T-SQL 17

select * from People 17

18

Рисунок 18

Выполнение запроса к базе данных 18

Задача 3 – управление базой данных с помощью SQL Server Management Studio 18

В этой задаче вы будете работать с SQL Server с помощью привычного инструмента - SQL Server Management Studio. 18



Откройте SQL Server Management Studio из меню Start | All Programs | Microsoft SQL Server 2008 R2 | SQL Server Management Studio. Отобразится диалог ввода реквизитов. 18

В диалоге Connect to Server введите реквизиты. Убедитесь, что выбран тип аутентификации SQL Server Authentication, поскольку в текущий момент SQL Azure поддерживает только его. 18

Внимание: замените [SERVERNAME] вашим именем сервера («Имя_сервера».database.windows.net.) 18

19



Рисунок 19

Подключение к SQL Azure с использованием SQL Server Management Studio 19

Нажмите кнопку Connect. 19

В панели Object Explorer отобразится структура базы данных. Обратите внимание на то, что представление базы данных SQL Azure не отличается от традиционной. 19

19

Рисунок 19

Структура базы данных HoLTestDB в панели Object Explorer 19

В дереве Object Explorer выберите базу данных HoLTestDB и нажмите кнопку New Query на панели инструментов. 20

20



Рисунок 20

Вызов окна создания запроса 20

У вас открылось окно создания запроса. Чтобы убедиться в подключении к БД SQL Azure, можно воспользоваться встроенной функцией @@version. Введите приведенный ниже запрос и нажмите кнопку Execute. Полученный результат отображает редакцию и версию Microsoft SQL Azure. 20

T-SQL 20

SELECT @@version 20

20

Рисунок 20

Запрос версии SQL Azure 20

Замените предыдущий запрос приведенным ниже и нажмите кнопку Execute. Убедитесь в том, что результат отображает список доступных баз данных. 20

T-SQL 21

SELECT * FROM sys.databases 21

21

Рисунок 21

Результаты запроса, отображающего список доступных баз данных 21

Чтобы получить имя базы данных, в контексте которой работает текущее подключение, выполните приведенный ниже запрос. 21

C# 21

SELECT db_name() 21

21

Рисунок 21

Запрос текущей базы данных 21

Не закрывайте окно запроса, оно потребуется при работе над следующей задачей. 21

Задача 4 – создание учетных записей и пользователей базы данных 21

Как и SQL Server, SQL Azure позволяет создавать дополнительные учетные записи и ассоциировать их с пользователями базы данных. В данной задаче вы добавите учетную запись для входа, после чего создадите ассоциированного с ней пользователя базы данных HoLTestDB. 22



Откройте новое окно запроса, подключенное к базе данных master. Чтобы сделать это, в панели Object Explorer раскройте узел System Databases, расположенный внутри узла Databases, и выберите элемент master. Затем нажмите кнопку New Query на панели инструментов. 22

22

Рисунок 22

Открытие окна запроса в контексте БД master 22

Внимание: использовать уже открытое ранее окно запроса, подключенное к БД HoLTestDB, нельзя без закрытия текущего подключения. Инструкция USE <имя_базы_данных> не работает в SQL Azure. Таким образом, для изменения текущей БД необходимо открыть новое окно запроса или выполнить процедуру разрыва и повторного соединения. 22

Создайте учетную запись, выполнив следующий запрос: 22

T-SQL 22

CREATE LOGIN HoLUser WITH password='Password1' 22

Внимание: рекомендуется указать уникальный пароль и использовать его далее в ходе выполнения данной лабораторной работы. В противном случае настоятельно рекомендуется удалить учетную запись после завершения выполнения работы. Чтобы сделать это, выполните в контексте базы данных master следующий запрос: 22

DROP LOGIN HoLUser 23

Вернитесь в подключенное к базе данных HoLTestDB окно запроса. Если вы закрыли его, то откройте повторно, выбрав базу данных HoLTestDB в панели Object Explorer и нажав кнопку New Query. 23

В окне запроса выполните следующую команду, добавляющую нового пользователя в базу данных HoLTestDB. Новый пользователь ассоциируется с учетной записью HoLUser. 23

T-SQL 23

-- Create a new user from the login and execute 23

CREATE USER HoLUser FROM LOGIN HoLUser 23

Теперь добавьте пользователя в роль db_owner базы данных HoLTestDB, выполнив следующий запрос: 23

T-SQL 23

-- Add the new user to the db_owner role and execute 23

EXEC sp_addrolemember 'db_owner', 'HoLUser' 23

Внимание: сделав пользователя участником роли db_owner, вы присвоили ему очень широкий набор полномочий. В реальной ситуации следует руководствоваться принципом наименьших полномочий. 23

Измените используемого в текущем подключении пользователя на вновь созданного HoLUser. Чтобы сделать это, щелкните правой кнопкой мыши внутри окна запросов, выберите пункт Connection, после чего щелкните на Change Connection. 23

24

Рисунок 24

Изменение свойств подключения к базе данных 24

В диалоге Connect to Database Engine замените имя учетной записи (поле Login) на HoLUser и укажите пароль (поле Password) – значение, которое вы указали при создании учетной записи. 24

24

Рисунок 24

Подключение к базе данных от имени другой учетной записи 24

Нажмите кнопку Options, чтобы отобразить расширенный перечень настроек. Перейдите на закладку Connection Properties и убедитесь в том, чтоб выбрана база данных HoLTestDB. Если текущее значение отличается, потребуется впечатать его в поле Connect do database, поскольку в раскрывающемся списке необходимое значение может отсутствовать. Нажмите кнопку Connect. 25

25

Рисунок 25

Подключение к указанной базе данных 25

Внимание: теперь вы подключены к базе данных от имени пользователя HoLUser. В оставшейся части упражнения вы будете работать в контексте данного пользователя. 25

Задача 5 – создание таблиц, индексов и запросов 25

В окне запроса замените содержимое приведенным ниже фрагментом, создающим таблицу Contact, и выполните его. 26

T-SQL 26

CREATE TABLE [Contact]( 26

[ContactID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 26

[Title] [nvarchar](8) NULL, 26

[FirstName] [nvarchar](50) NOT NULL, 26

[LastName] [nvarchar](50) NOT NULL, 26

[EmailAddress] [nvarchar](50) NULL, 26

[Phone] [nvarchar](30) NULL, 26

[Timestamp] [timestamp] NOT NULL 26



) 26

Внимание: SQL Azure требует наличия кластерного индекса у всех таблиц. Если вы создадите таблицу без кластерного индекса, то не сможете добавлять в нее строки. 26

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

Создайте индекс по столбцу EmailAddress. Для этого выполните запрос: 26

T-SQL 26

CREATE INDEX IX_Contact_EmailAddress 26

ON Contact(EmailAddress) 26



Добавьте запись в таблицу Contact: 26

T-SQL 26

INSERT INTO [Contact] 26

([Title],[FirstName],[LastName],[EmailAddress],[Phone]) 26

VALUES 26



('Mr','David','Alexander','davida@fabrikam.com','555-1234-5555') 26

Теперь выполните выборку данных с отображением плана выполнения. Для этого используйте опцию SHOWPLAN_ALL: 26

T-SQL 27

SET SHOWPLAN_ALL ON 27

GO 27

SELECT * FROM Contact WHERE EmailAddress ='davida@fabrikam.com' 27

GO 27

SET SHOWPLAN_ALL OFF 27

27



Рисунок 27

План выполнения запроса на небольшом объеме данных 27

Теперь добавьте значительное количество строк в таблицу и повторно постройте план выполнения. Прежде всего, создайте хранимую процедуру AddData, добавляющую указанное количество записей в таблицу. Добавляемые строки идентичны за исключением адреса электронной почты, который формируется на основании значения счетчика (Counter) по шаблону [Counter]davida@fabrikam.com: 27

T-SQL 27

CREATE PROCEDURE AddData 27

@NumRows int 27

AS 27

DECLARE @counter int 27

SELECT @counter = 1 27

WHILE (@counter < @NumRows) 27

BEGIN 27

INSERT INTO [Contact] 27

([Title],[FirstName],[LastName],[EmailAddress],[Phone]) 28

VALUES 28

('Mr','David','Alexander',CAST(@counter as nvarchar)+'davida@fabrikam.com','555-1234-5555') 28

SELECT @counter = @counter + 1 28



END 28

Выполните хранимую процедуру для добавления 10000 строк в таблицу Contact: 28

T-SQL 28

EXEC AddData 10000 28

Внимание: добавление 10000 строк в таблицу может занять некоторое время. 28

Выполните приведенный ниже запрос и сравните планы выполнения со случаем, когда в таблице содержалось малое количество строк. 28

T-SQL 28

SET SHOWPLAN_ALL ON 28

GO 28

SELECT * FROM Contact WHERE EmailAddress ='davida@fabrikam.com' 28

GO 28

SET SHOWPLAN_ALL OFF 28

29

Рисунок 29

План выполнения запроса на значительном объеме данных 29

Внимание: обратите внимание, что во втором случае использован созданный индекс. В плане выполнения об этом свидетельствует запись Index Seek. 29

С использованием SQL Server Management Studio вы можете также отобразить план выполнения в графическом виде. Находясь в окне запроса, нажмите сочетание клавиш Ctrl-L, чтобы отобразить ожидаемый план выполнения (Estimated Execution Plan). 29

29



Рисунок 29

Графическое представление плана выполнения 29

Упражнение 3: работа с SQL Azure из приложения Windows Azure 30

Цель данного упражнения – продемонстрировать, насколько просто работать с SQL Azure и Windows Azure – это можно сделать, используя только имеющиеся в Visual Studio графические инструменты и функциональность перетаскивания объектов. 30



Задача 1 – создание тестовой базы данных в SQL Azure 30

Подключитесь к расположенной в SQL Azure базе данных HoLTestDB, используя созданную ранее учетную запись HoLUser. Вы можете использовать как SQL Server Management Studio, так и веб-приложение Database Manager for SQL Azure. 30

Если вы используете SQL Server Management Studio, выберите пункт Open | File в меню File, перейдите в подкаталог Source\Assets из каталога с материалами к лабораторной работе. Если вы работаете с приложением Database Manager for SQL Azure, выберите закладку Database в верхнем левом углу и нажмите кнопку Open Query на панели File. Выберите файл AdventureWorks2008LT_Azure.sql и нажмите кнопку Open. 30

Внимание: данный скрипт содержит облегченную версию базы данных AdventureWorksLT2008, доступную для скачивания с сайта Codeplex.com (http://msftdbprodsamples.codeplex.com/). Там содержится эта и другие тестовые базы для SQL Azure. 30

Выполните запрос; это может занять некоторое время. 30

Задача 2 – создание проекта в Visual Studio 30

В этой задаче вы создадите в Visual Studio новый проект – веб-приложение для Windows Azure. 30



Запустите Microsoft Visual Studio 2010 от имени администратора. Для этого в меню Start | All Programs | Microsoft Visual Studio 2010 щелкните правой кнопкой мыши по ярлыку Microsoft Visual Studio 2010 и выберите Run as Administrator. 30

В случае появления диалога User Account Control нажмите кнопку Continue. 30

В меню File выберите пункты New, затем Project. 30

В диалоге New Project разверните соответствующий предпочитаемому языку узел (Visual C# или Visual Basic) и выберите вариант Cloud на панели Installed Templates. 30

В списке шаблонов укажите Windows Azure Project. Установите имя для создаваемого проекта - “AdventureWorks” и местоположение - каталог Source\Ex3-BuildingSQLAzureApp в каталоге с материалами к лабораторной работе. Убедитесь в том, что установлен флажок Create directory for solution и установите имя решения в “Begin”. Нажмите кнопку OK для создания проекта. 30

31



Рисунок 31

Создание нового проекта для Windows Azure (C#) 31

31

Рисунок 32

Создание нового проекта для Windows Azure (Visual Basic) 32

В диалоге New Windows Azure Project на панели Roles раскройте закладку, соответствующую предпочитаемому вами языку (Visual C# или Visual Basic), выберите из списка тип роли ASP.NET Web Role и нажмите кнопку с указывающей вправо стрелкой (>), чтобы добавить экземпляр роли данного типа в решение. Перед тем, как закрыть данный диалог, выберите добавленную роль в правой панели, нажмите на пиктограмме с изображением карандаша и переименуйте роль в AdventureWorksWeb. Нажмите кнопку OK для создания решения. 32

32

Рисунок 32

Добавление ролей в проект для Windows Azure (C#) 32

33

Рисунок 33

Добавление ролей в проект для Windows Azure (VB) 33

После завершения создания шаблона проекта должно отобразиться содержимое страницы Default.aspx. Если этого не произошло, откройте указанный файл. 33

Перейдите в режим Design View, для чего нажмите кнопку Design. 33

Перетащите элемент управления GridView из раздела Data панели инструментов Toolbox на страницу. 33

33



Рисунок 33

Добавление элемента управления GridView 33

Используя SmartTag (кнопка со стрелкой в верхнем правом углу) добавленного элемента управления GridView, выберите в раскрывающемся списке Choose Data Source пункт New data source. 34

34

Рисунок 34

Создание нового источника данных 34

В мастере Data Source Configuration Wizard выберите источник данных Database. Не меняйте предлагаемый идентификатор и нажмите кнопку OK. 34

35

Рисунок 35

На диалоге Configure Data Source нажмите кнопку New Connection. 35

36

Рисунок 36

Если отобразится диалог Choose data source, выберите Microsoft SQL Server и нажмите кнопку Continue. 36

Теперь сконфигурируйте подключение к базе данных SQL Azure. Убедитесь, что в диалоге Add Connection указан провайдер Microsoft SQL Server (SqlClient). Если потребуется изменить, выберите Microsoft SQL Server в списке Data Source и .NET Framework Data Provider for SQL Server в раскрывающемся списке Data Provider. Установите значение поля Server name равным имени вашего сервера SQL Azure. Измените тип аутентификации на Use SQL Server Authentication и укажите реквизиты для подключения к SQL Azure. В списке доступных баз данных выберите HoLTestDB. 36

37



Рисунок 37

Нажмите кнопку Test Connection. Если все указано верно, вы увидите диалог, информирующий об успешном подключении. Нажмите кнопку OK. 37

38

Рисунок 38

Нажмите кнопку OK, чтобы закрыть диалог Add Connection. 38

Нажмите кнопку Next для перехода к следующему шагу мастера Data Source Configuration Wizard. 38

Убедитесь в том, что установлен флажок Yes, save this connection as, установите имя строки подключения в AdventureWorksLTConnectionString и нажмите кнопку Next. 38

38

Рисунок 39

Установите переключатель в значение Specify a custom SQL statement or stored procedure и нажмите кнопку Next. 39

39

Рисунок 39

Использование SQL выражения для выполнения запросов данных 39

Внимание: использование опции Specify columns from a table or view невозможно, так как в AdventureWorks используется именованная схема SalesLT – на нее необходимо ссылаться явно. 39

Вставьте приведенный ниже запрос в поле SQL Statement и нажмите кнопку Next. 39

SELECT [FirstName], [LastName], [CompanyName], [EmailAddress] FROM [SalesLT].[Customer] 40

40

Рисунок 40

Нажмите кнопку Test Query. Вы должны увидеть результат запроса. 40

41

Рисунок 41

Нажмите кнопку Finish. 41

Нажмите кнопку F5 для локального запуска приложения. 41

После запуска приложения в браузере вы увидите список заказчиков: 41

42

Рисунок 42

Закройте окно браузера. 42

Упражнение 4: работа с использованием различных механизмов доступа 42

В этом упражнении вы получите навыки выполнения простых операций при работе с базами данных SQL Azure с использованием ADO.NET, ODBC, OLEDB и технологии LINQ to SQL. Кроме того, вы увидите, как организовать доступ к находящимся в SQL Azure данным из кода на Java и PHP. 42

При работе с технологиями от Microsoft вы увидите, что взаимодействие с базой данных SQL Azure не отличается от работы с привычным SQL Server. Основное отличие заключается в формате строки подключения, используемой для создания соединения с SQL Azure. После установления соединения запросы можно выполнять с помощью любого класса, наследующего от DbCommand. 42

Задача 1 –открытие заготовки решения и изучение общей функциональности 43

Используя различные подходы, вы подключитесь к базе данных SQL Azure и выполните некоторые операции над данными. Чтобы не тратить время на реализацию простейших операций, вы возьмете за основу проект, в котором уже содержится эта функциональность – это позволит сосредоточиться на более сложных вопросах и подчеркнет отличия предлагаемых для рассмотрения технологий. 43

В этой задаче вы откроете решение ConnectDemoApp и изучите описание класса SQLAzureConnectionDemo. Затем вы создадите потомков данного класса – по одной реализации для каждой демонстрируемой технологии. 43

Запустите Microsoft Visual Studio 2010 из меню Start | All Programs | Microsoft Visual Studio 2010 | Microsoft visual Studio 2010. 43

Откройте заготовку решения для данного упражнения. Для этого выберите пункт меню File | Open Project. В диалоге Open Project перейдите в каталог Source\Ex4-ConnectingViaClientLibraries\begin внутри каталога с материалами к работе. Выберите соответствующий предпочитаемому языку каталог (C# или VB), затем откройте файл решения ConnectDemoApp.sln, находящийся в папке ConnectDemoApp. Откроется решение с приведенной ниже структурой. 43

43

Рисунок 43

Структура решения Connect Demo App (C#) 43

44

Рисунок 44

Структура решения Connect Demo App (Visual Basic) 44

Как было сказано ранее, вы создадите по одному классу для каждой рассматриваемой технологии. Каждый класс будет наследовать от абстрактного класса SQLAzureConnectionDemo, предоставляющего базовую функциональность работы с БД SQL Azure. Внутри используется провайдер, реализуемый в дочернем классе. Приведенная ниже таблица поясняет назначение всех методов данного класса: 44

Обратите внимание, что в дочерних классах необходимо и достаточно переопределить только методы CreateConnection и CreateCommand. 45



Задача 2 – подключение к SQL Azure с использованием ADO.NET 45

Добавьте в проект новый класс AdoConnectionDemo. Для этого щелкните правой кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add | Class. В диалоге Add New Item выберите шаблон Class и измените имя на AdoConnectionDemo.cs и AdoConnectionDemo.vb в зависимости от выбранного языка. 45

Добавьте в класс объявления пространств имен: 45

C# 45

using System.Data.Common; 45

using System.Data.SqlClient; 45

Visual Basic 45

Imports System.Data.Common 45

Imports System.Data.SqlClient 45

Обновите объявление класса, сделав его открытым и наследующим от SQLAzureConnectionDemo. Результат представлен ниже: 45

Внимание: В Visual Basic новый класс всегда создается как Public. 45

C# 45



public class AdoConnectionDemo : SQLAzureConnectionDemo 45

{ 45

} 45

Visual Basic 45

Public Class AdoConnectionDemo 46

Inherits SQLAzureConnectionDemo 46



End Class 46

Добавьте конструктор, передающий реквизиты в конструктор базового класса: 46

(Code Snippet – Intro to SQL Azure – Ex4 ADO constructor – C#) 46



C# 46

public AdoConnectionDemo(string userName, string password, string dataSource, string databaseName) 46

: base(userName, password, dataSource, databaseName) 46



{ 46

} 46

(Code Snippet – Intro to SQL Azure – Ex4 ADO constructor – VB) 46



Visual Basic 46

Public Sub New(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) 46

MyBase.New(userName, password, dataSource, databaseName) 46



End Sub 46

Переопределите метод CreateConnection для создания объекта типа SqlConnection: 46

(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateConnection – C#) 46



C# 46

protected override DbConnection CreateConnection(string userName, string password, string dataSource, string databaseName) 46

{ 46

return new SqlConnection(CreateAdoConnectionString(userName, password, dataSource, databaseName)); 46



} 46

(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateConnection – VB) 46



Visual Basic 46

Protected Overrides Function CreateConnection(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) As DbConnection 47

Return New SqlConnection(CreateAdoConnectionString(userName, password, dataSource, databaseName)) 47



End Function 47

Реализуйте метод CreateAdoConnectionString, используемый методом CreateConnection. Он конструирует строку подключения ADO.NET, для чего использует возможности класса SqlConnectionStringBuilder. 47

(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateAdoConnectionString method – C#) 47



C# 47

private string CreateAdoConnectionString(string userName, string password, string dataSource, string databaseName) 47

{ 47

// create a new instance of the SQLConnectionStringBuilder 47

SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder 47

{ 47

DataSource = dataSource, 47

InitialCatalog = databaseName, 47

Encrypt = true, 47

TrustServerCertificate = false, 47

UserID = userName, 47

Password = password, 47

}; 47

return connectionStringBuilder.ToString(); 47



} 47

(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateAdoConnectionString method – VB) 47



Visual Basic 47

Private Function CreateAdoConnectionString(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) As String 47

' create a new instance of the SQLConnectionStringBuilder 48

Dim connectionStringBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder With {.DataSource = dataSource, .InitialCatalog = databaseName, .Encrypt = True, .TrustServerCertificate = False, .UserID = userName, .Password = password} 48

Return connectionStringBuilder.ToString() 48



End Function 48

Переопределите метод CreateCommand для создания команды ADO.NET. Этот абстрактный метод вызывается из родительского класса. 48

(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateCommand method – C#) 48



C# 48

protected override DbCommand CreateCommand(DbConnection connection) 48

{ 48

return new SqlCommand() { Connection = connection as SqlConnection }; 48



} 48

(Code Snippet – Intro to SQL Azure – Ex4 ADO CreateCommand method – VB) 48



Visual Basic 48

Protected Overrides Function CreateCommand(ByVal connection As DbConnection) As DbCommand 48

Return New SqlCommand() With {.Connection = TryCast(connection, SqlConnection)} 48



End Function 48

Это все, что необходимо сделать для поддержки ADO.NET. Теперь внесите некоторые изменения в файл Program.cs или Module1.vb (в зависимости от выбранного языка) для проверки добавленной функциональности. 48



Откройте файл Program.cs (для проекта на Visual C#) или Module1.vb (для проекта на Visual Basic), дважды щелкнув на нем в панели Solution Explorer. 48

Добавьте в метод Main код, создающий экземпляр класса AdoConnectionDemo и выполняющий тестовый пример. 48

(Code Snippet – Intro to SQL Azure – Ex4 ADO demo implementation – C#) 48



C# 48

static void Main(string[] args) 48

{ 49

//Invoke the ADO.NET connection demo 49

Console.WriteLine("Starting the ADO.NET Connection Demo..."); 49

AdoConnectionDemo demo1 = new AdoConnectionDemo(userName, password, datasource, databaseName); 49

demo1.ConnectToSQLAzureDemo(); 49

Console.WriteLine("Demo Complete... Press any key"); 49

Console.ReadKey(); 49

} 49

(Code Snippet – Intro to SQL Azure – Ex4 ADO demo implementation – VB) 49



Visual Basic 49

Sub Main() 49

' Invoke the ADO.NET connection demo 49

Console.WriteLine("Starting the ADO.NET Connection Demo...") 49

Dim demo1 = New AdoConnectionDemo(_userName, _password, _datasource, _databaseName) 49

demo1.ConnectToSQLAzureDemo() 49

Console.WriteLine("Demo Complete... Press any key") 49

Console.ReadKey() 49

End Sub 49

Найдите над методом Main объявления переменных и обновите их значения в соответствии с реквизитами учетной записи SQL Azure. 49

49

Рисунок 49

Настройка параметров подключения к SQL Azure (C#) 49

50

Рисунок 50

Настройка параметров подключения к SQL Azure (Visual Basic) 50

Нажмите F5 для запуска приложения. В консоли должен отобразиться результат выполнения запросов. 50

50

Рисунок 50

Результат выполнения с использованием технологии ADO.NET 50

Задача 3 – подключение к SQL Azure с использованием ODBC 50

В этой задаче вы создадите наследующий от SQLAzureConnectionDemo класс и реализуете функциональность для работы с SQL Azure с использованием ODBC. 50



Добавьте в проект новый класс OdbcConnectionDemo. Для этого щелкните правой кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add | Class. В диалоге Add New Item выберите шаблон Class и измените имя на OdbcConnectionDemo.cs или OdbcConnectionDemo.vb в зависимости от выбранного языка. 50

Добавьте в класс объявления пространств имен: 50

C# 50

using System.Data.Common; 50

using System.Data.Odbc; 51

Visual Basic 51

Imports System.Data.Common 51

Imports System.Data.Odbc 51

Обновите объявление класса, сделав его открытым и наследующим от SQLAzureConnectionDemo. Результат представлен ниже: 51

Внимание: В Visual Basic новый класс всегда создается как Public. 51

C# 51



public class OdbcConnectionDemo : SQLAzureConnectionDemo 51

{ 51

} 51

Visual Basic 51

Public Class OdbcConnectionDemo 51

Inherits SQLAzureConnectionDemo 51



End Class 51

Добавьте конструктор, передающий реквизиты в конструктор базового класса: 51

(Code Snippet – Intro to SQL Azure – Ex4 ODBC constructor – C#) 51



C# 51

public OdbcConnectionDemo(string userName, string password, string dataSource, string databaseName): 51

base (userName, password, dataSource, databaseName) 51



{ 51

} 51

(Code Snippet – Intro to SQL Azure – Ex4 ODBC constructor – VB) 51



Visual Basic 51

Public Sub New(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) 51

MyBase.New(userName, password, dataSource, databaseName) 52



End Sub 52

Переопределите метод CreateConnection для создания объекта типа SqlConnection: 52

(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateConnection – C#) 52



C# 52

protected override DbConnection CreateConnection(string userName, string password, string dataSource, string databaseName) 52

{ 52

return new OdbcConnection(CreateOdbcConnectionString(userName, password, dataSource, databaseName)); 52



} 52

(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateConnection – VB) 52



Visual Basic 52

Protected Overrides Function CreateConnection(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) As DbConnection 52

Return New OdbcConnection(CreateOdbcConnectionString(userName, password, dataSource, databaseName)) 52



End Function 52

Реализуйте метод CreateOdbcConnectionString, используемый методом CreateConnection. Этот метод создает строку подключения для ODBC-драйвера. Предлагаемая реализация использует драйвер SQL Server Native Client 10.0. Вы можете указать необходимость использования другого драйвера ODBC. 52

(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateOdbcConnectionString method – C#) 52



C# 52

private string CreateOdbcConnectionString(string userName, string password, string dataSource, string databaseName) 52

{ 52

string serverName = GetServerName(dataSource); 52

OdbcConnectionStringBuilder connectionStringBuilder = new OdbcConnectionStringBuilder 52

{ 53

Driver = "SQL Server Native Client 10.0", 53

}; 53

connectionStringBuilder["Server"] = "tcp:" + dataSource; 53

connectionStringBuilder["Database"] = databaseName; 53

connectionStringBuilder["Uid"] = userName + "@" + serverName; 53

connectionStringBuilder["Pwd"] = password; 53

return connectionStringBuilder.ConnectionString; 53

} 53

(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateOdbcConnectionString method – VB) 53



Visual Basic 53

Private Function CreateOdbcConnectionString(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) As String 53

Dim serverName As String = GetServerName(dataSource) 53

Dim connectionStringBuilder As OdbcConnectionStringBuilder = New OdbcConnectionStringBuilder With {.Driver = "SQL Server Native Client 10.0"} 53

connectionStringBuilder("Server") = "tcp:" & dataSource 53

connectionStringBuilder("Database") = databaseName 53

connectionStringBuilder("Uid") = userName & "@" & serverName 53

connectionStringBuilder("Pwd") = password 53

Return connectionStringBuilder.ConnectionString 53



End Function 53

Переопределите метод CreateCommand для создания команды OdbcCommand. Этот абстрактный метод вызывается из родительского класса. 53

(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateCommand method – C#) 53



C# 53

protected override DbCommand CreateCommand(DbConnection connection) 53

{ 53

return new OdbcCommand() { Connection = connection as OdbcConnection }; 53



} 54

(Code Snippet – Intro to SQL Azure – Ex4 ODBC CreateCommand method – VB) 54



Visual Basic 54

Protected Overrides Function CreateCommand(ByVal connection As DbConnection) As DbCommand 54

Return New OdbcCommand() With {.Connection = TryCast(connection, OdbcConnection)} 54



End Function 54

Это все, что необходимо сделать для работы с использованием ODBC. Теперь внесите некоторые изменения в файл Program.cs или Module1.vb (в зависимости от выбранного языка) для проверки добавленной функциональности. 54



Откройте файл Program.cs (для проекта на Visual C#) или Module1.vb (для проекта на Visual Basic), дважды щелкнув на нем в панели Solution Explorer. 54

Добавьте в метод Main код, создающий экземпляр класса OdbcConnectionDemo и выполняющий тестовый пример. 54

(Code Snippet – Intro to SQL Azure – Ex4 ODBC demo implementation – C#) 54



C# 54

static void Main(string[] args) 54

{ 54

//... 54

//Invoke the ODBC connection demo 54

Console.WriteLine("Starting the ODBC Connection Demo..."); 54

OdbcConnectionDemo demo2 = new OdbcConnectionDemo(userName, password, datasource, databaseName); 54

demo2.ConnectToSQLAzureDemo(); 54

Console.WriteLine("Demo Complete... Press any key"); 54

Console.ReadKey(); 54



} 54

(Code Snippet – Intro to SQL Azure – Ex4 ODBC demo implementation – VB) 54



Visual Basic 54

Sub Main() 54

' ... 55

' Invoke the ODBC connection demo 55

Console.WriteLine("Starting the ODBC Connection Demo...") 55

Dim demo2 = New OdbcConnectionDemo(_userName, _password, _datasource, _databaseName) 55

demo2.ConnectToSQLAzureDemo() 55

Console.WriteLine("Demo Complete... Press any key") 55

Console.ReadKey() 55



End Sub 55

Если вы не сделали этого ранее, найдите над методом Main объявления переменных и обновите их значения в соответствии с реквизитами учетной записи SQL Azure. 55

Нажмите F5 для запуска приложения. В консоли должен отобразиться результат выполнения запросов. 55

55

Рисунок 55

Результат выполнения с использованием ODBC 55

Задача 4 – подключение к SQL Azure с использованием OLEDB 55

Добавьте в проект новый класс OleDbConnectionDemo. Для этого щелкните правой кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add | Class. В диалоге Add New Item выберите шаблон Class и измените имя на OleDbConnectionDemo.cs или OleDbConnectionDemo.vb в зависимости от выбранного языка. 55

Добавьте в класс объявления пространств имен: 56

C# 56

using System.Data.Common; 56

using System.Data.OleDb; 56

Visual Basic 56

Imports System.Data.Common 56

Imports System.Data.OleDb 56

Обновите объявление класса, сделав его открытым и наследующим от SQLAzureConnectionDemo. Результат представлен ниже: 56

Внимание: В Visual Basic новый класс всегда создается как Public. 56

C# 56



public class OleDbConnectionDemo : SQLAzureConnectionDemo 56

{ 56

} 56

Visual Basic 56

Public Class OleDbConnectionDemo 56

Inherits SQLAzureConnectionDemo 56



End Class 56

Добавьте конструктор, передающий реквизиты в конструктор базового класса: 56

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB constructor – C#) 56



C# 56

public OleDbConnectionDemo(string userName, string password, string dataSource, string databaseName) 56

: base(userName, password, dataSource, databaseName) 56



{ 56

} 57

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB constructor – VB) 57



Visual Basic 57

Public Sub New(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) 57

MyBase.New(userName, password, dataSource, databaseName) 57



End Sub 57

Переопределите метод CreateConnection для создания объекта типа OleDbConnection: 57

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateConnection – C#) 57



C# 57

protected override DbConnection CreateConnection(string userName, string password, string dataSource, string databaseName) 57

{ 57

return new OleDbConnection(CreateOleDBConnectionString(userName, password, dataSource, databaseName)); 57



} 57

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateConnection – VB) 57



Visual Basic 57

Protected Overrides Function CreateConnection(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) As DbConnection 57

Return New OleDbConnection(CreateOleDBConnectionString(userName, password, dataSource, databaseName)) 57



End Function 57

Реализуйте метод CreateOleDbConnectionString, используемый методом CreateConnection. Этот метод создает строку подключения для OLEDB. 57

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateOleDbConnectionString method – C#) 57



C# 57

private string CreateOleDBConnectionString(string userName, string password, string dataSource, string databaseName) 57

{ 57

string serverName = GetServerName(dataSource); 58

OleDbConnectionStringBuilder connectionStringBuilder = new OleDbConnectionStringBuilder 58

{ 58

Provider = "SQLOLEDB", 58

DataSource = dataSource, 58

}; 58

connectionStringBuilder["Initial Catalog"] = databaseName; 58

connectionStringBuilder["UId"] = userName + "@" + serverName; 58

connectionStringBuilder["Pwd"] = password; 58

return connectionStringBuilder.ConnectionString; 58

} 58

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateOleDbConnectionString method – VB) 58



Visual Basic 58

Private Function CreateOleDBConnectionString(ByVal userName As String, ByVal password As String, ByVal dataSource As String, ByVal databaseName As String) As String 58

Dim serverName As String = GetServerName(dataSource) 58

Dim connectionStringBuilder As OleDbConnectionStringBuilder = New OleDbConnectionStringBuilder With {.Provider = "SQLOLEDB", .DataSource = dataSource} 58

connectionStringBuilder("Initial Catalog") = databaseName 58

connectionStringBuilder("UId") = userName & "@" & serverName 58

connectionStringBuilder("Pwd") = password 58

Return connectionStringBuilder.ConnectionString 58

End Function 58

Переопределите метод CreateCommand для создания команды OleDbCommand. Этот абстрактный метод вызывается из родительского класса. 58

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateCommand method – C#) 58



C# 59

protected override DbCommand CreateCommand(DbConnection connection) 59

{ 59

return new OleDbCommand() { Connection = connection as OleDbConnection }; 59



} 59

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB CreateCommand method – VB) 59



Visual Basic 59

Protected Overrides Function CreateCommand(ByVal connection As DbConnection) As DbCommand 59

Return New OleDbCommand() With {.Connection = TryCast(connection, OleDbConnection)} 59



End Function 59

Это все, что необходимо сделать для работы с использованием OLEDB. Теперь внесите некоторые изменения в файл Program.cs или Module1.vb (в зависимости от выбранного языка) для проверки добавленной функциональности. 59



Откройте файл Program.cs (для проекта на Visual C#) или Module1.vb (для проекта на Visual Basic), дважды щелкнув на нем в панели Solution Explorer. 59

Добавьте в метод Main код, создающий экземпляр класса OleDbConnectionDemo и выполняющий тестовый пример. 59

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB demo implementation – C#) 59



C# 59

static void Main(string[] args) 59

{ 59

//... 59

//Invoke the OleDB connection demo 59

Console.WriteLine("Starting the OLEDB Connection Demo…"); 59

OleDbConnectionDemo demo3 = new OleDbConnectionDemo(userName, password, datasource, databaseName); 59

demo3.ConnectToSQLAzureDemo(); 59

Console.WriteLine("Demo Complete... Press any key"); 59

Console.ReadKey(); 59



} 59

(Code Snippet – Intro to SQL Azure – Ex4 OLEDB demo implementation – VB) 60



Visual Basic 60

Sub Main() 60

' ... 60

' Invoke the OleDB connection demo 60

Console.WriteLine("Starting the OLEDB Connection Demo...") 60

Dim demo3 = New OleDbConnectionDemo(_userName, _password, _datasource, _databaseName) 60

demo3.ConnectToSQLAzureDemo() 60

Console.WriteLine("Demo Complete... Press any key") 60

Console.ReadKey() 60



End Sub 60

Если вы не сделали этого ранее, найдите над методом Main объявления переменных и обновите их значения в соответствии с реквизитами учетной записи SQL Azure. 60

Нажмите F5 для запуска приложения. В консоли должен отобразиться результат выполнения запросов. 60

60

Рисунок 60

Результат выполнения с использованием OLEDB 60

Задача 5 – подключение к SQL Azure с использованием Entity Framework 60

Вы подключились к базе данных SQL Azure с использованием трех технологий. Последнее, что вы попробуете, будет использование Entity Framework. Реализация классов в данном случае не будет наследовать от SQLAzureConnectionDemo, так как при использовании Entity Framework отсутствует явное управление подключениями и командами; все эти объекты создаются неявно для пользователя. 61



Откройте файл App.config и измените строку подключения таким образом, чтобы ссылаться на базу данных SQL Azure с использованием реквизитов созданного ранее пользователя. 61

Внимание: выполнение этого шага является обязательным, так как Entity Framework извлекает информацию для создания подключения из конфигурационного файла. 61

Добавьте в проект новый элемент ADO.NET Entity Data Model с именем HoLModel. Для этого щелкните правой кнопкой на узле проекта ConnectDemoApp в панели Solution Explorer. Выберите пункт меню Add | New Item. В диалоге Add New Item выберите шаблон ADO.NET Entity Data Model и измените имя на HoLModel.edmx. 61

61

Рисунок 61

Добавление модели EF 61

В мастере Entity Data Model Wizard выберите пункт Generate from database и нажмите кнопку Next. 61

62

Рисунок 62

Выбор исходных данных для создания модели 62

На шаге Choose Your Data Connection выберите пункт Yes, include sensitive data in the connection string и оставьте значения всех настроек по умолчанию. 62

63

Рисунок 63

Указание настроек модели 63

На шаге Choose Your Database Objects выберите все объекты и нажмите кнопку Finish . 63

64

Рисунок 64

Выбор объектов базы данных 64

После завершения создания модели она будет показана. 64

65

Рисунок 65

EF-модель создана 65

Добавьте в проект новый класс EFConnectionDemo. Для этого щелкните правой кнопкой на проекте ConnectDemoApp в панели Solution Explorer и выберите Add | Class. В диалоге Add New Item выберите шаблон Class и измените имя на EFConnectionDemo.cs или EFConnectionDemo.vb в зависимости от выбранного языка. 65

Обновите объявление класса, сделав его открытым: 65

C# 65



public class EFConnectionDemo 65

{ 65

} 65

Visual Basic 65

Public Class EFConnectionDemo 65

End Class 66

Только для проекта на C#, добавьте объявления следующих пространств имен: 66

C# 66

using System; 66

using System.Linq; 66

Добавьте в класс EFConnectionDemo метод, извлекающий из базы данных названия компаний и выводящий их на консоль. Воспользуетесь для этого возможностями класса EF HolTestDBEntities. 66

(Code Snippet – Intro to SQL Azure – Ex4 EF ConnectToSQLAzure method – C#) 66



C# 66

/// 66

/// HolTestDBEntities takes care of handling your transactions for you 66

/// leaving you free use Linq to extract information stores up in the cloud 66

///
66

public void ConnectToSQLAzureDemo() 66

{ 66

HolTestDBEntities context = new HolTestDBEntities(); 66

IQueryable companyNames = from customer in context.Customers 66

where customer.CustomerID < 20 66

select customer.CompanyName; 66

66

foreach (var company in companyNames) 66

{ 66

Console.WriteLine(company); 66

} 66



} 66

66


(Code Snippet – Intro to SQL Azure – Ex4 EF ConnectToSQLAzure method – VB) 66

''' 67

''' HolTestDBEntities takes care of handling your transactions for you 67

''' leaving you free you use Linq to extraxt information stored up in the cloud. 67

'''
67

Public Sub ConnectToSQLAzureDemo() 67

Dim context As New HolTestDBEntities() 67

' get all company names 67

Dim companyNames As IQueryable(Of String) = From customer In context.Customers _ 67

Where customer.CustomerID < 20 _ 67

Select customer.CompanyName 67

' display these all on the console 67

For Each company As String In companyNames 67

Console.WriteLine(company) 67

Next company 67



End Sub 67

Теперь внесите некоторые изменения в файл Program.cs или Module1.vb (в зависимости от выбранного языка) для проверки добавленной функциональности. 67

(Code Snippet – Intro to SQL Azure – Ex4 EF demo implementation – C#) 67



C# 67

static void Main(string[] args) 67

{ 67

//... 67

//Invoke the Entity Framework connection demo 67

Console.WriteLine("Starting the Entity Framework Connection Demo..."); 67

EFConnectionDemo demo4 = new EFConnectionDemo(); 67

demo4.ConnectToSQLAzureDemo(); 67

Console.WriteLine("Demo Complete... Press any key"); 68

Console.ReadKey(); 68



} 68

(Code Snippet – Intro to SQL Azure – Ex4 EF demo implementation – VB) 68



Visual Basic 68

Sub Main() 68

' ... 68

' Invoke the Entity Framework connection demo 68

Console.WriteLine("Starting the Entity Framework Connection Demo...") 68

Dim demo4 = New EFConnectionDemo() 68

demo4.ConnectToSQLAzureDemo() 68

Console.WriteLine("Demo Complete... Press any key") 68

Console.ReadKey() 68



End Sub 68

Нажмите F5 для запуска приложения. В консоли должен отобразиться результат – длинный перечень названий компаний, извлеченный из БД средствами Entity Framework. 68

68

Рисунок 68

Результат выполнения с использованием функциональности Entity Framework 68

Задача 6 – подключение к SQL Azure с использованием сторонних технологий 68

Подключение к базе данных SQL Azure с использованием сторонних технологий также просто. 69

Приведенный ниже фрагмент кода на PHP, как и один из примеров выше, использует драйвер SQL Server Native Client ODBC. 69

PHP 69

  $host = "server.database.windows.net"; 69

  $dbname = "database"; 69

  $dbuser = "user@server"; 69

  $dbpwd = "password"; 69

  $driver = "{SQL Server Native Client 10.0}"; 69



// Build connection string 69

  $dsn="Driver=$driver;Server=$host;Database=$dbname;Encrypt=true;TrustServerCertificate=true"; 69

  if (!($conn = @odbc_connect($dsn, $dbuser, $dbpwd))) { 69

      die("Connection error: " . odbc_errormsg()); 69

  } 69

  69

  // Got a connection, do what you will 69

  69

  // Free the connection 69

  @odbc_close($conn); 69



?> 69

Ниже приведен пример подключения к SQL Azure с использованием JDBC. 69



JAVA 69

// Build a connection string 69

String connectionUrl= "jdbc:sqlserver://server.database.windows.net;" + 69

"database=mydatabase;encrypt=true;user=user@server;password=*****"; 69



// Next, make the sure the SQL Server Driver is loaded. 69

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 69

69

// Then attempt to get a connection. This will null or throw if we can't get a connection. 70

Connection sqlConn = DriverManager.getConnection(connectionUrl); 70

if (sqlConn == null) 70

{ 70

System.out.println("Unable to obtain connection. exiting"); 70

System.exit(1); 70

} 70

// Got a connection, do what you will 70

// Free the connection 70

sqlConn.close(); 70

Результат 70

В этой работы вы познакомились с базовыми принципами работы с SQL Azure. Если у вас ранее был опыт работы с СУБД MS SQL Server, выполнение ряда задач должно было показаться вам знакомым. Важно, что использование SQL Azure позволяет применить навыки, полученные ранее в ходе работы с SQL Server. 70

Вы научились создавать базы данных, учетные записи и пользователей базы данных. Вы увидели, что по большей части работа с объектами SQL Azure не отличается от работы с SQL Server. 70

Кроме того, вы создали простое приложение для Windows Azure, умеющее взаимодействовать с базой данных SQL Azure. 70

И, наконец, убедились, что создание подключений к базе данных SQL Azure с использованием различных технологий доступа от Microsoft не отличается от создания подключений к традиционным реляционным базам данных. 70



Внимание:



  1. Для выполнения данной лабораторной работы необходима учетная запись Windows Azure

  2. Все необходимые для выполнения данной работы материалы находятся в каталоге C:\WAPTK\Labs\IntroToSQLAzureVS2010

  3. Пароль для входа в систему: Passw0rd!



  1   2   3   4   5   6   7   8   9

Похожие:

Лабораторная работа Основы разработки с sql azure iconЛабораторная работа Основы разработки под Windows Azure содержание обзор 26
В данной лабораторной работе вы создадите простое приложение GuestBook, в котором демонстрируется ряд возможностей платформы Windows...
Лабораторная работа Основы разработки с sql azure iconГоризонтальное масштабирование sql azure (федерация)
Для освобождения емкости необходимо объединить несколько баз данных sql azure в одну. Этот подход называется сегментированием баз...
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа Развертывание приложений в Windows Azure Версия: 0
Упражнение 1: Развертывание приложения с использованием портала управления Windows Azure 7
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа Работа с sql-сервером в качестве клиента ms access
Запрос sql — это запрос, создаваемый при помощи инструкций sql. Примерами запросов sql могут служить запросы на объединение, запросы...
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа Изучая хранилище Windows Azure Версия: 0
Кроме этого, с использованием дисков ваши приложения, запущенные в Windows Azure, могут использовать существующие ntfs api для доступа...
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа Использование редактора запросов sql borland sql explorer(TM) для создания запросов к данным с использованием языка sql. Требования к программному обеспечению
Лабораторная работа Использование редактора запросов sql borland sql explorer(TM) для создания запросов к данным с использованием...
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа № Запросы определения данных sql. Задание
Определить схемы разработанных отношений на sql-сервере. Обосновать выбор типов данных атрибутов отношений
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа №2 sql запросы для создания таблиц

Лабораторная работа Основы разработки с sql azure iconЛабораторная работа №1 Работа в Oracle Database Express Edition 1 Лабораторная работа №6
Лабораторная работа Выполнение расчетов с использованием программирования в среде Visual Basic for Applications
Лабораторная работа Основы разработки с sql azure iconЛабораторная работа по курсу «Физические основы микроэлектроники» Нижний Новгород, 2005
Операционный усилитель: Лабораторная работа по курсу «Микроэлектроника» / Сост. Н. В. Федосеева, С. М. Планкина. – Н. Новгород, ннгу,...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org