Операции с данни с йерархична структура

Предмет DataSet, вместо това представлява отделен кеш за релационни данни в паметта. Той може да съдържа множество таблици, третирани като отделни или свързани таблици. Характеристиките на този обект улесняват навигацията и промяната на свързани данни.

В допълнение, доставчикът на данни на SQL Server .NET ви позволява да получавате XML поток директно от SQL Server 2000. За това е предвидена специална API функция., ExecuteXmlReader, достъпен чрез обект SQLCommand. Метод ExecuteXmlReader изпълнява SQL заявка срещу SQL връзката и въз основа на XML, върнат от заявката, създава обект XmlReader. ExecuteXmlReader използва се само в изрази, които водят до XML данни, и е ефективен при заявки, при които блок има изрази SELECT ЗА XML.

Йерархичните редове често са структурирани като множество набори от свързани редове. За ефективност често е по-добре да извличате множество набори от редове в едно извикване на база данни, вместо да правите заявки за всеки отделно. Обикновено за това се използва партида SQL изрази или съхранена процедура с множество изрази. ИЗБЕРЕТЕ. Също така, ако използвате в оператора ИЗБЕРЕТЕ ЗА XML блок, SQL Server 2000 връща йерархични низове като XML.

Приложение на ADO. NET DataReader обект

Следващият пример изпълнява партида от два SQL израза ИЗБЕРЕТЕ и съответните набори от резултати се извличат чрез обект DataReader. Този обект осигурява навигация само напред през данните, така че данните най-вероятно трябва да бъдат преместени в друг контейнер за по-нататъшна работа. Защото DataReader оставя връзката с базата данни отворена, от гледна точка на мащабируемост, данните трябва да се прехвърлят бързо и връзката да се затвори възможно най-скоро. Предайте обект DataReader между нивата на разпределено приложение не можете.

За итерация над ред в набори от резултати се използват следните методи Следващ резултат и Прочети обект DataReader.

См. Пример 1 в изходния код (EN) BDAdotNetData4.vb.

Използване на XmlReader и ADO. NET SqlCommand обект

Microsoft SQL Server 2000 има вградена XML поддръжка. Така че резултатите от изразите ИЗБЕРЕТЕ върнати като XML, тези изрази трябва да съдържат блок ЗА XML. Метод ExecuteXmlReader обект SQLCommand ви позволява да получавате XML данни директно от SQL Server 2000. ExecuteXmlReader връща обект System.Xml.XmlReader, съдържащ XML данни, получени от SQL Server 2000.

Следващият пример показва съхранена процедура, която използва ЗА XML, започна с извикване на метода ExecuteXmlReader обект SQLCommand.

См. Пример 2 в изходния код (EN) BDAdotNetData4.vb.

Приложение на ADO. NET DataSet обект

Предмет DataAdapter извлича данни от източника и попълва обекти Таблица с данни вътре DataSet. За изпълнение на заявки към обект на база данни DataAdapter обект се изисква Връзка.

Ако заявката връща множество набори от резултати, DataSet записва всеки от тях в отделна таблица. Може да има връзка между таблици.

Връзка между таблици

След като свържете две таблици в DataSet чрез връзка (използвайки обект DataRelation), навигацията е опростена. Освен това свързването улеснява избора на всички дъщерни редове (обекти DataRow) на една таблица за родителски ред в друга таблица (обект Таблица с данни). Претовареният метод се използва за избор на дъщерни редове GetChildRows обект DataRow.

Връзките се установяват чрез създаване на обект DataRelation, който картографира редове от една таблица в редове от друга. Тази връзка се съхранява в обект DataRelationCollection, което се съдържа в обекта DataSet.

Свързване на таблици в обект DataSet не е задължително. Те могат да останат необвързани. Ако обаче има някаква връзка между двете таблици, например чрез връзка с външен ключ, свързването на таблиците ще улесни достъпа до дъщерните редове в същия обект. Таблица с данни от родителски ред в друг обект Таблица с данни.

Следващият пример на код демонстрира извличане на поръчки и техните подробности за поръчките от таблиците Orders и OrderDetails. Предмет DataSet съдържа таблици Поръчки и Подробности, съответстващи на таблиците в базата данни. Връзката между двете таблици е колоната „OrderId“, налична и в двата обекта Таблици с данни.

Тъй като преди да извика метода Попълнете няма таблици в DataSet, обект SQLDataAdapter автоматично създава таблици за DataSet и ги попълва с върнатите данни. Ако таблиците са създадени преди извикване Попълнете, предмет SQLDataAdapter просто попълва съществуващи таблици.

См. Пример 3 в изходния код (EN) BDAdotNetData4.vb.

От ADO. NET обект DataSet ви позволява да извличате, обработвате и модифицирате данни в базата данни, гарантира референтната цялост на таблиците при добавяне, промяна и изтриване на редове. В допълнение, този обект ви позволява да извършвате каскадни актуализации и изтривания, като същевременно запазва целостта на данните.

Приложение на ADO. NET DataAdapter обект

Метод Актуализиране обект DataAdapter прехвърля кешираните промени в обекта DataSet, източник на данни. За да добавите нови редове DataAdapter използва InsertCommand, за смяна на линии - UpdateCommand, и да изтриете редове от базата данни - DeleteCommand. Когато извикате метода Актуализиране, DataAdapter анализира променените линии и определя кой от обектите Команда трябва да се направи, за да се предадат чакащите промени на всеки ред.