Главная » Просмотр файлов » Методические указания к выполнению ЛР6 - Работа с объектно-реляционной базой данных

Методические указания к выполнению ЛР6 - Работа с объектно-реляционной базой данных (1033957), страница 3

Файл №1033957 Методические указания к выполнению ЛР6 - Работа с объектно-реляционной базой данных (Методические указания к выполнению ЛР6 - Работа с объектно-реляционной базой данных) 3 страницаМетодические указания к выполнению ЛР6 - Работа с объектно-реляционной базой данных (1033957) страница 32017-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Как будет показано ниже, для запроса статического XML-документа с помощью LINQ to XML не понадобится прилагать почти никаких усилий. Ниже приведен пример выдачи запроса к файлу hamlet.xml для получения списка всех персонажей (актеров), которые принимают участие в пьесе. Каждый из этих персонажей представлен в XML-документе элементом <PERSONA>.

XDocument xdoc = XDocument.Load(@"C:\hamlet.xml");

var query = from people in xdoc.Descendants("PERSONA")

select people.Value;

Console.WnteLine("Найдено {0} персонажей", query.Count());

Console.WnteLine();

foreach (var item in query)

{

Console.WnteLine (item);

}

Console. ReadLme ();

В наши дни динамические XML-документы встречаются в Интернете очень часто. Они формируются в каналах блогов, подкастов и т.п. за счет отправки запроса по конкретно­му конечному ULR-адресу. Эти каналы могут просматриваться как в браузере посредством специального RSS-arpeгатора, так и в виде чистого XML. Ниже показан пример работы с RSS-каналом непосредственно из кода.

XDocument xdoc = XDocument.Load(@"http://geekswithblogs.net/evjen/Rss.aspx");

Работа с документом XML

При проработке примеров с XML-документом hamlet.xml можно было заметить, что он является довольно большим. Пока что в этой главе было показано лишь несколько спо­собов, которыми можно запрашивать данные из XML-документов, а в следующем разделе демонстрируется методика чтения и записи данных в XML-документ.

Чтение данных из документа XML

Ранее уже было показано, насколько легко отправлять запросы в XML-документ с при­менением операторов запросов LINQ вроде следующего:

var query = from people in xdoc.Descendants("PERSONA")

select people.Value;

Этот запрос возвращает всех персонажей, найденных в документе. С использованием метода Element () объекта XDocument из XML-документа можно извлечь конкретные зна­чения, с которым будет производиться работа. Например, следующий фрагмент XML пока­зывает, каким образом в документе hamlet .xml представлен элемент <TITLE>:

<?xml version="1.0"?>

<PLAY>

<TITLE>The Tragedy of Hamlet, Prince of Denmark</TITLE>

<!—XML удален для ясности—>

</PLAY>

Нетрудно заметить, что элемент </TITLE> вложен в элемент <PLAY>. Следовательно, к нему легко добраться с помощью следующего фрагмента кода в консольном приложении:

XDocument xdoc = XDocument.Load(@"С:\hamlet.xml");

Console.WriteLine(xdoc.Element("PLAY").Element("TITLE").Value);

Запись данных в документ XML

Запись данных в документ XML осуществляется так же легко, как и чтение. Например, чтобы изменить имя первого персонажа в файле hamlet. xml, можно воспользоваться сле­дующим кодом:

XDocument xdoc = XDocument.Load(@"C:\hamlet.xml");

xdoc.Element("PLAY").Element("PERSONAE").Element("PERSONA").SetValue("Bill Evjen, king of Denmark");

Console.WriteLine(xdoc.Element("PLAY").Element("PERSONAE").Element("PERSONA").Value);

В данном случае первый экземпляр элемента <PERSONA> перезаписывается значением Bill Evjen, king of Denmark с помощью метода SetValue() объекта Element(). После вызова метода SetValue() и применения значения к XML-документу это значение затем извлекается с использованием того же подхода, что раньше. После выполнения этого фрагмента кода можно увидеть, что значение первого элемента <PERSONA> изменилось.

Другим способом изменения документа (в рассматриваемом примере — для добавления в него элементов) является создание нужных элементов в виде объектов XElement и затем их добавление в документ.

XDocument xdoc = XDocument.Load(@"C:\hamlet.xml");

XElement xe = new XElement("PERSONA","Bill Evjen, king of Denmark");

xdoc.Element("PLAY").Element("PERSONAE").Add(xe);

var query = from people in xdoc.Descendants("PERSONA")

select people.Value;

Console.WriteLine("Найдено {0} персонажей", query.Count());

Console.WriteLine();

foreach (var item in query)

{

Console.WriteLine(item);

}

Практическое выполнение

Работа с коллекциями - LINQ to object

В среде MS Visual Studio создать консольное приложение на языке С#. Определить и инициализировать коллекцию (список строк). Используя технологию linq to objects выполнить набор запросов (через точечный синтаксис и запросом).

Открыть Visual Studio.

Создать новый проект (консольный).

Указать тип Visual C# - Windows – Console Application и имя проекта, нажать ОК.

Далее в коде функции Main ввести код программы.И затем запустить программу на выполнение.

Команда вывода данных (1-й параметр – строка вывода, остальные подставляются через фигурные скобки):

Console.WriteLine(" Test - {0} {1}", "Hello!", 123);

Команда ввода:

Console.ReadKey();

Общий код:

static void Main(string[] args)

{

Console.WriteLine(" Test - {0} {1}", "Hello!", 123);

Console.ReadKey();

}

результат:

Работа с базой данных - linq to sql

Открыть MS Visual Studio

Создать проект

Указать его имя и тип.

Контекст БД DataContext

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

DataContext — это класс, соединяющий с базой данных, отслеживающий то, что мы изменяем, и обновляющий базу данных при вызове метода SubmitChanges.

В LINQ to SQL принято использовать класс, производный от DataContext. Имя про­изводного класса обычно совпадает с именем базы данных, на которую он отобража­ется.



Добавить к проекту класс

И указать его тип – LINQ to SQL

Откроется окно конструктора

Вызвать Server Explorer (из меню Вид) для просмотра объектов БД (соединения с БД)

Выбрать нужное соединение (или создать новое) и в нем открыть БД и ее объекты

Вызвать Server Explorer (из меню Вид) для просмотра объектов БД (соединения с БД)

Перетащить из Server Explorer таблицы, функции и процедуры в окно конструктора.

Открыть окно проекции БД в класс контекста двойным щелчком по названию класса в Solution Erplorer.

Название класса контекста было указано при его создании (по умолчанию DataClasses1).

Откроется код класса контекста, в котором можно посмотреть названия классов и объектов таблиц и их полей.

Обращение к БД из программы

Добавить в проект ссылку на библиотеку

Из контекстного меню решения (проекта) выбрать Add Reference

В проекте перейти к редактированию экранной формы (двойным щелчком по ее названию в Solution Explorer). Поместить на нее таблицу И кнопку.

Для работы с БД создать контекст (переменная БД и ее инициализация при открытии формы)

LINQ to SQL подразумевает использование сущностных классов, причем каждый из них обычно отображается на единственную таблицу базы данных. Таким образом, мы имеем сущностные классы, отображенные на таблицы базы данных, и свойства сущностных классов, отображенные на столбцы этих таблиц. Это отображение “класс-таблица" и “свойство-столбец” являются сутью LINQ to SQL.

Обращение к таблице

Двойным щелчком по кнопке (в редакторе формы) перейти к коду ее обработчика и написать код заполнения таблицы данными из БД:

Обращение таблице через контекст :

Источник данных таблицы = Контекст.таблица

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication6

{

public partial class Form1 : Form

{

public DataClasses1DataContext db;

public Form1()

{

InitializeComponent();

db=new DataClasses1DataContext();

}

private void button1_Click(object sender, EventArgs e)

{

dataGridView1.DataSource = db.persons;

}

}

}

Запустить проект и проверить работу.

Добавить кнопки и в обработчике каждой указать запрос на извлечение данных (формат Linq в точечной нотации, в качестве коллекции указать таблицу).

Вывод в таблицу результата выполнения запроса.

Вызов процедуры или функции:

Обращение через контекст:

Контекст.процедура(параметры)

Вызов хранимых процедур и функций БД происходит через обращение к одноименным методам объекта-контекста. Типы входных и выходных параметров соответствуют объявленным в БД.

Скалярная функция возвращает одно значение, которое присваивается переменной.

Табличная – коллекцию (ее можно присвоить источнику данных или обработать в цикле).

Процедура – 1 значение, коллекцию или ничего ( в зависимости от конкретной ситуации).

Редактирование таблицы

Добавление объекта в таблицу

Создать объект через new,

Присвоить значения его полям,

Добавить через контекст в таблицу,

Сохранить изменения контекста в БД.

Удаление

Открыть объект через запрос к таблице БД,

Выбрать из результата запроса конкретный объект,

Удалить объект из таблицы через контекст,

Сохранить изменения контекста в БД.



Изменение

Открыть объект через запрос к таблице БД,

Выбрать из результата запроса конкретный объект (функция Single() обеспечивает извлечение одного объекта, а не коллекции),

Изменить значения полей объекта

Сохранить изменения контекста в БД.



Работа со связанными таблицами

В запросах к связанным таблицам можно переходить по связям 1-М в обоих направлениях.

Например, таблицы Builders и Road связаны М-1.

В запросе к Builders можно использовать поля road (значение внешнего ключа) и road1(ссылка на связанный объект в другой таблице):

dataGridView1.DataSource = from b in db.builders

where b.road1.src=="СПб"

select new { b.title, b.road, b.road1.id,

b.road1.src, b.road1.dest,

b.road1.type, b.road1.cost };

Из запроса к Road можно использовать поле builders (множество объектов в связанной таблице), например (выбрать дороги, которые строила компания CMYххх)

dataGridView1.DataSource = from r in db.roads

where r.builders.Count()>0 && r.builders.Any(x=>x.title.Contains("CMY"))

orderby r.src,r.dest

select new {r.src,r.dest,r.type,r.id,

t = r.builders.First(x => x.title.Contains("CMY")).title,

r.builders.Count };

Пример задания

1. Работа с коллекциями - LINQ to obiect

В среде MS Visual Studio создать консольное приложение на языке С#. Определить и инициализировать коллекцию (список строк). Используя технологию linq to objects выполнить набор запросов (через точечный синтаксис и запросом):

  • строки, содержащие подстроку,

  • отсортированные строки,

  • (точечный синтаксис) количество строк, являющихся уникальными,

  • группировка строк длиной 3 символа по первой букве. В результат — первая буква строки, количество строк в группе (генерация объектов «на лету»).

Результат отобразить на экране.

2. Работа с базой данных - linq to sql

2.1. Создать БД

В среде MS SQL Server Management Studio создать БД lab6_91 (или использовать созданную ранее) и добавить в нее таблицы

"Hotel"(отель), содержит свойства:

  • hname - название – строковое varchar(10), (КЛЮЧ),

  • hcity – город – строковое varchar(15),

  • stars – количество звезд – целое.

"Client" (клиент), содержит свойства:

  • fio - ФИО – строковое, varchar(50),

  • num - номер – целое,

  • ofhotel — отель — varchar(10),(ВНЕШНИЙ КЛЮЧ)

  • id - идентификатор (КЛЮЧ - PK) – целое, автоинкремент.



Характеристики

Список файлов лабораторной работы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее