Смекни!
smekni.com

Интернет-магазин по продаже музыкальных CD и DVD дисков (стр. 5 из 16)

Например, в компоненте данных OrdersDB, находятся все необходимые методы для управления заказами покупателей, взаимодействующие с таблицами базы данных Orders и OrderDetails. Вызов метода, который возвращает позиции заказа с указанным номером, в коде web-страницы будет выглядеть следующим образом:

OrdersDB. GetOrderDetails(orderID);

При этом весь код взаимодействия с базой данных находится в этом методе:

public class OrdersDB

{

public static DataSet GetOrderDetails (int orderID)

{

SqlConnection conn = new SqlConnection (WebConfigurationManager. ConnectionStrings ["connStr"].ConnectionString);

SqlCommand cmd = new SqlCommand ("GetOrderDetails", conn);

…………………………………………………;

cmd. Parameters. Add ("OrderID", SqlDbType. Int);

cmd. Parameters ["OrderID"].Value = orderID;

…………………………………………….;

SqlDataAdapter da = new SqlDataAdapter(cmd);

try

{

da. Fill(ds);

………….;

return ds;

}

catch (SqlException)

{

……………;

returnnull;

}

}

)

На рисунке 5 изображена диаграмма классов всех компонентов доступа к данным.

Рис. 5 "Диаграмма классов компонентов доступа к данным"

Примечание.

· ArtistDB – взаимодействие с таблицей Artists(Исполнители);

· OrdersDB– взаимодействие с таблицами Orders(Заказы) и OrderDetails(Детали заказа);

· TypeProductDB– взаимодействие с таблицей TypeProduct(Категории продукции);

· CatalogDB– взаимодействие с таблицей Catalogue(Каталог);

· ResponsesDB– взаимодействие с таблицей Responses(Отзывы);

· TypePaymentDB– взаимодействие с таблицей TypePayment(Способы оплаты);

3.3 Привязка данных

Помимо механизмов извлечения информации из источника данных, современные web-приложения нуждаются в удобном способе отображения этой информации на web-странице. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Это означает, что не нужно вручную программировать логику циклического чтения строк, состоящих из многочисленного количества столбцов, и манипулирования отдельными элементами управления.

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

GridViewOrderDetails. DataSource = OrdersDB. GetOrderDetails(orderID);GridViewOrderDetails. DataBind();

Метод GetOrderDetails возвращает объект DataSet, содержащий результаты запроса к базе данных. Для того чтобы отобразить их на web-странице, используя привязку данных, необходимо присвоить DataSet специальному полю DataSource элемента управления (в данном случае GridView) и вызвать метод DataBind() элемента управления, чтобы выполнить привязку. В итоге на web-странице будет изображена таблица, содержащая позиции заказа с заданным номером.

Привязку данных можно также осуществлять с помощью элементов управления источниками данных. При разработке дипломного проекта использовался элемент управления источниками данных – ObjectDataSource, который для привязки данных использует компоненты доступа к данным. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Ниже приведён пример использования элемента управления источником данных ObjectDataSource при отображении отзывов покупателей об альбоме с заданным номером:

<asp: ObjectDataSource ID= "ObjectDataSource1" SelectMethod= "GetResponse" TypeName= "ComponentsDB. ResponseDB" runat= "server">

<SelectParameters>

<asp: QueryStringParameter Name= "ProductID" QueryStringField= "ProductID" Type= "Int32" />

………………….

</asp: ObjectDataSource>

<asp: GridView ID= "ResponsesGridView" DataSourceID=" ObjectDataSource1" runat= "server" />

Всё это выполняется декларативно в файле дескрипторов web-страницы. При этом можно указывать, откуда ObjectDataSource должен брать параметры запроса, если они необходимы. В данном случае параметр ProductID берётся из строки запроса.

3.4 Пример взаимодействия с БД

Ниже приведён пример взаимодействия web-приложения с базой данных, используя технологию ADO.NET и компоненты доступа к данным. Web-страница HistoryOrders.aspx выводит на экран таблицу, содержащую все заказы данного пользователя.

На странице HistoryOrders.aspx находится элемент управления GridView, предназначенный для отображения табличных данных:

<asp: GridView ID= "GridViewOrders" AutoGenerateColumns= "False" EnableViewState= "False"

ShowFooter= "true" SkinID= "GridViewStyle" runat= "server">

<Columns>

<asp: BoundField DataField= "OrderID" HeaderText= "Номерзаказа" />

<asp: BoundField DataField= "OrderDate" DataFormatString={0:dd.MM.yy}

………………………………………………………………………………

<asp: BoundField DataField= "SendDate" HeaderText= "Датаотправки" HtmlEncode= "False" DataFormatString=" {0:dd.MM.yy}" NullDisplayText= "Неизвестна"/>

<asp: BoundField DataField= "ConditionName" HeaderText= "Состояниезаказа" />

…………………………………………………………………….

<asp: BoundField DataField= "TotalPrice" DataFormatString={0:c} HtmlEncode= "false" HeaderText= "Цена"/>

…………………

<ItemTemplate>

<asp: HyperLink ID= "OrderDetailsHyperLink" Text= "Подробности" NavigateUrl='<%# "~/ProtectedPages/HistoryOrderDetails.aspx? OrderID=" + …………………………….

runat= "server" CssClass= "GridViewLink"></asp: HyperLink>

</ItemTemplate>

<ItemStyle Width= "100" />

……………………….

</Columns>

</asp: GridView>

Для доступа к базе данных используется компонент доступа к данным – OrdersDB, для выборки данных – метод OrdersDB. GetOrdersByUser

public static DataSet GetOrdersByUser (Guid userID)

{

SqlConnection conn = new SqlConnection (WebConfigurationManager. ConnectionStrings ["connStr"].ConnectionString);

…………………………………………………………

cmd. CommandType = CommandType. StoredProcedure;

cmd. Parameters. Add ("UserId", SqlDbType. UniqueIdentifier);

cmd. Parameters ["UserId"].Value = userID;

………………………………………

SqlDataAdapter da = new SqlDataAdapter(cmd);

try

{

da. Fill(ds);

………….

}

catch (SqlException)

{

conn. Close();

return null;

}

}

Хранимаяпроцедура GetOrdersByUser, находящаясянасерверебазыданных:

CREATE PROCEDURE GetOrdersByUser (@UserId UNIQUEIDENTIFIER) AS

SELECT OrderID, OrderDate, SendDate, ConditionName, TypePaymentName, TotalPrice FROM OrdersView

WHERE UserId = @UserId

ORDER BY OrderDate

GO

Вфайлекода web-страницы HistoryOrders.aspx.cs вызываетсяметод GetOrdersByUser класса OrdersDB:

MembershipUser _user = Membership. GetUser (User. Identity. Name);

DataSet ds = OrdersDB. GetOrdersByUser((Guid)_user. ProviderUserKey);

if (ds == null)

{

……………………………….

}

GridViewOrders. DataSource = ds;

GridViewOrders. DataBind();

Компонент доступа к данным вызывает хранимую процедуру на сервере базы данных, передавая в неё в качестве параметра код пользователя. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении, и если была обнаружена ошибка при взаимодействии с БД, то осуществляется переход на страницу информации об ошибке.

В результате на web-страницы будет изображена таблица, представленная на рисунке 6.


Рис. 6 "История заказов покупателя"


4. Проектирование компонентов web-приложения

4.1 Общая структура web-приложения

4.1.1 Структура каталогов

На рисунке 7 изображена полная структура каталогов разработанного web-приложения.

Рис. 7 лист 1 "Структура каталога web-приложения"


Рис. 7 лист 2 "Структура каталога web-приложения"


Подкаталог AdminProtectedPages содержит web-страницы (файлы дескрипторов.aspx и файлы кода.cs), доступные только аутентифицированным пользователям, чьи учётные записи относятся к роли Administrator. Подробнее о ролях рассмотрено в пункте №. 4.5.3

Назначение web-страниц подкаталога AdminProtectedPages:

· AddProduct.aspx – добавление новых альбомов в;

· AdminDefault.aspx – страница по умолчанию интерфейса администратор;

· ManagementArtist.aspx – добавление, удаление и редактирование информации об;

· ManagementGenre.aspx – добавление, удаление и редактирование информации о;

· AdminFAQ.aspx – просмотр и ответ на вопросы пользователей;

· ManagementTypeProduct.aspx – добавление, удаление и редактирование информации о;

· Orders.aspx – просмотр заказов;

· OrdersDetails.aspx – детали заказа, печать накладной заказа, изменение состояния выполнения заказа;

· UpdateDeleteProduct.aspx – редактирование и удаление данных об.

Подкаталог ImageAlbum содержит обложки музыкальных альбомов.

Подкаталог App_Code содержит файлы пользовательских классов:

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

Подкаталог App_Theme содержит файл темы оформления и css-файл. (будут рассмотрены в пункте 4.2.3).

Подкаталог Images содержит изображения, используемые для оформления web-страниц.

Подкаталог MasterPages содержит файлы мастер-страниц, которые будут рассмотрены в пункте 4.2.1

Назначение web-страниц подкаталога MasterPages:

· UserMasterPage.master – мастер-страница интерфейса покупателя;

· AdminMasterPage.master– мастер-страница интерфейса администратора;

Подкаталог ProtectedPages содержит web-страницы (файлы дескрипторов.aspx и файлы кода.cs), доступные только аутентифицированным пользователям. Подробнее об аутентификации будет написано в пункте 4.5.2.

Назначение web-страниц подкаталога ProtectedPages: