Udostępnij za pośrednictwem


Praca z zestawów danych w programie Visual Studio

Zestawów danych są obiekty, które zawierają tabele danych, w której tymczasowo można przechowywać danych do użycia w aplikacji.Jeśli aplikacja wymaga pracy z danymi, można załadować danych do zestawu danych, który zapewnia aplikacji z lokalnej pamięci podręcznej w pamięci danych do pracy z.Nawet jeśli aplikacja zostanie rozłączony z bazy danych, można pracować z danymi w elemencie dataset.Element dataset utrzymuje informacji na temat zmian do swoich danych, tak aktualizacje mogą być śledzone i wysyłane do bazy danych, gdy aplikacja staje się ponownie podłączane.

Poniższe tematy zawierają szczegółowe informacje dotyczące pracy z zestawów danych w programie Visual Studio:

Temat

Opis

Tworzenie i edytowanie wpisanych zestawów danych

Zawiera wyjaśnienie narzędzi projektowania do tworzenia zestawów danych.

Jak: Tworzenie zestawu danych wpisywanych

Wyjaśniono, jak utworzyć maszynowy zestawu danych, za pomocą narzędzi projektowania w Visual Studio.

Jak: rozszerzają funkcjonalność zestawu danych

Zawiera opis kroków tworzenia częściowej klasy dla zestawu danych, gdzie można dodać kod oprócz kod generowany przez projektanta.

Jak: Otwórz element Dataset w projektancie zestawu danych

Wyjaśniono, jak otworzyć zestawów danych z Solution Explorer i Źródła danych okna.

Jak: edytowanie zestawu danych

Wyjaśniono, jak edytować obiekty w zestawie danych za pomocą Projektant Dataset.

Instruktaż: Tworzenie zestawu danych przy użyciu projektanta zestawów danych

Zawiera instrukcje krok po kroku tworzenia maszynowy dataset bez pomocy Kreatora konfiguracji źródła danych.

Projektowanie DataTables

Zawiera łącza do tematów, w których wyjaśniono, jak tworzyć i edytować tabele danych z narzędzia służące do projektowania.

Relacje w zestawach danych

Zawiera łącza do tematów, w których wyjaśniono, jak tworzyć i edytować danych stosunków z narzędziami w czasie projektowania.

TableAdapters

Zawiera łącza do tematów, w których wyjaśniono, jak tworzyć i edytować TableAdapters narzędziami w czasie projektowania.

Praca z zestawów danych w aplikacji wielowarstwowej

Wyjaśnia, jakie n warstwowych aplikacji są, jakie funkcje są dostępne do pracy z zestawów danych w aplikacji wielowarstwowej.

Struktura DataSet jest podobny do relacyjnej bazy danych; prezentuje ona modelu obiektów hierarchicznych tabel, wierszy, kolumn, ograniczenia i relacji.

Zestawów danych może wpisana lub bez typu.(Aby uzyskać więcej informacji, zobacz poniżej sekcji zatytułowanej "Typed kontra zestawów danych bez typu") Zestawów danych wpisywanych wynikają z ich schemat (strukturę tabeli i kolumny) z plików XSD i są łatwiejsze do programu przeciwko.W aplikacji, można użyć zbiorów danych wpisywanych lub bez typu.Visual Studio ma więcej obsługę narzędzia zestawów danych wpisywanych i programowania z nimi jest łatwiejsze i mniej podatne.

Tworzenie zestawów danych wpisywanych przez uruchomienie Kreator konfiguracji źródła danych, lub przez dodanie DataSet element poprzez Dodaj nowy element polecenia na Projekt menu.Aby uzyskać więcej informacji, zobacz Jak: Tworzenie zestawu danych wpisywanych.

Tworzenie zestawów danych bez typu za pomocą przeciągania DataSet elementów z Przybornik na Windows Forms Designer lub Component Designer.

Po utworzeniu zestawów danych, należy edytować je w Tworzenie i edytowanie wpisanych zestawów danych.

Tworzenie i pracę z zestawów danych wpisywanych i bez typu przy użyciu następujących części .NET Framework obszarów nazw.

Zestawów danych znajdują się w obszarze nazw dane systemowe

Obszar nazw systemu danych zestawu danych

Obiekty dataset są eksponowane za pomocą standardowych narzędzi programistycznych, takich jak właściwości i kolekcje.Na przykład:

Podczas wypełniania zestawów danych z danymi

Element dataset nie zawiera rzeczywistych danych domyślnie.Wypełnianie obiektu dataset z danymi faktycznie odnosi się do ładowania danych do poszczególnych DataTable obiektów, wchodzące w skład zestawu danych.Wypełnij tabele danych przez wykonywanie kwerend TableAdapter lub wykonywanie karta danych (na przykład, SqlDataAdapter) polecenia.Po wypełnieniu obiektu dataset z danymi różne zdarzenia, które są wywoływane, ograniczenia są sprawdzane, i tak dalej.Aby uzyskać więcej informacji na temat ładowania danych do obiektu dataset, zobacz Pobieranie danych do aplikacji.

Kod, aby wypełnić dataset jest automatycznie dodawany do obsługi zdarzenia load formularza, podczas przeciągania elementów z Okno źródła danych w formularzu w aplikacji systemu Windows.Aby uzyskać więcej informacji, należy wykonać następujące Instruktaż: Instruktaż: Wyświetlanie danych w formularzu Windows.

Przykład wypełniania elementu dataset z TableAdapter:

Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers)
this.customersTableAdapter.Fill(this.northwindDataSet.Customers);

Można wypełnić dataset różne sposoby:

  • Jeśli tworzony jest zestaw danych za pomocą narzędzi projektowania jako jednego z kreatorów danych, wywołanie Fill metody TableAdapter.(Domyślnie tworzone są TableAdapters Fill metody, ale są podane szansy sprzedaży, aby zmienić nazwę, więc rzeczywistej nazwy metody mogą być różne.) Aby uzyskać więcej informacji, zobacz sekcję "Wypełnianie zestawu danych przy użyciu TableAdapter" Jak: wypełnić Dataset z danymi.

  • Wywołanie Fill metoda DataAdapter.Aby uzyskać więcej informacji, zobacz Populating a DataSet from a DataAdapter.

  • Ręcznie Wypełnij tabele w zestawie danych, tworząc DataRow obiektów i dodawania ich do tabeli DataRowCollection kolekcji.(Można tylko to zrobić w czasie wykonywania. nie można ustawić DataRowCollection kolekcji w czasie projektowania.) Aby uzyskać więcej informacji, zobacz Adding Data to a Table.

  • Przeczytaj dokument XML lub strumienia do zestawu dataset.Aby uzyskać więcej informacji, zobacz ReadXml metody.Na przykład, zobacz Instruktaż: Odczytywania danych XML do zestawu danych.

  • Scal (kopię) zawartość jednego zestawu danych na inny.W tym scenariuszu może być przydatne, jeśli Twój pobiera zestawów danych aplikacji z różnych źródeł (różnych usług sieci Web XML, na przykład), ale potrzeb skonsolidować je do jednego zestawu danych.Aby uzyskać więcej informacji, zobacz Merging DataSet Contents.

  • Scal (kopię) zawartość jednej DataTable na inny.

Zapisywanie danych w kopii zestawu danych do bazy danych

Po wprowadzeniu zmian do rekordów w zestawie danych, zmiany muszą być zapisywane z powrotem do bazy danych.Aby zapisać zmiany z zestawu danych do bazy danych, należy wywołać Update metody TableAdapter lub DataAdapter który komunikuje się między zestawu danych i jej odpowiednią bazę danych.

Podczas korzystania z narzędzia danych projektu w programie Visual Studio wysyłać dane z bazą, wywołując metodę aktualizacji TableAdapter i przekazując w tabeli danych, który chcesz zapisać.Na przykład:

CustomersTableAdapter.Update(NorthwindDataSet.Customers)
customersTableAdapter.Update(northwindDataSet.Customers);

W celu kontrolowania procesu aktualizacji wywołania jednej z metod TableAdapter DBDirect gdzie można przekazywać w poszczególnych wartości dla każdego wiersza danych.Aby uzyskać więcej informacji, zobacz Jak: aktualizuje dane za pomocą TableAdapter, i Instruktaż: Zapisywanie danych z metody TableAdapter DBDirect.

DataRow Zawiera klasy, używane do manipulowania pojedynczych rekordów RowState właściwości, których wartości wskazują, czy i jak wiersz został zmieniony od tabeli danych najpierw został załadowany z bazy danych.Possible values include Deleted, Modified, Added, and Unchanged.Update Metod TableAdapter i DataAdapter zbadać wartość RowState właściwość, aby ustalić rekordy, które muszą być zapisane w bazie danych i jakie polecenia określonej bazy danych (InsertCommand, UpdateCommand, i DeleteCommand) należy powołać się na.

Aby uzyskać więcej informacji na temat aktualizowania danych, zobacz Zapisywanie danych.

Nawigowanie po rekordach w zestawach danych

Ponieważ zestaw danych jest całkowicie rozłączonych kontener dla danych, zbiorów danych (w przeciwieństwie do zestawów rekordów ADO) nie obsługują pojęcie bieżącego rekordu.Zamiast wszystkich rekordów w zestawie danych są dostępne w dowolnym momencie.

Ponieważ bieżący rekord nie istnieje żadne szczególne właściwość, która wskazuje bieżący rekord i nie ma żadnych metod lub właściwości do przenoszenia z jednego rekordu do innego (patrz uwaga poniżej).Poszczególne tabele w zestawie danych można uzyskać dostęp jako obiekty; Każda tabela uwidacznia zbiór wierszy.Można traktować to podobnie jak każdy zbierania, uzyskiwanie dostępu do wierszy z indeksem kolekcji lub w języku programowania przy użyciu instrukcji specyficznych dla kolekcji.

Na przykład, można uzyskać czwarty wiersz z Customers tabelę z następującego kodu:

TextBox1.Text = NorthwindDataSet.Customers(3).ContactName
textBox1.Text = northwindDataSet.Customers[3].ContactName;

[!UWAGA]

Jeśli do obiektu dataset, są wiążące formantów w formularzu, można użyć BindingNavigator składnik, aby uprościć dostęp do pojedynczych rekordów.Aby uzyskać więcej informacji, zobacz Jak: Przejdź do danych w Windows Forms.

LINQ do zestawu danych

LINQ to DataSetUmożliwia LINQ (zintegrowane języka kwerend) nad danymi w DataSet obiektu.Aby uzyskać więcej informacji, zobacz LINQ to DataSet.

Obiektów DataSet i XML

Element dataset jest relacyjna widok danych, który może być reprezentowany w języku XML.Ta relacja między zestawów danych i XML pozwala wykorzystać następujące funkcje zestawów danych:

  • Strukturze dataset — tabel, kolumn, relacji i ograniczeń — mogą być zdefiniowane w schemacie XML.Zestawów danych można zapisywać i odczytywać schematów, których są przechowywane przy użyciu informacji na temat struktury ReadXmlSchema i WriteXmlSchema metody.Jeśli schemat nie jest dostępna, zestaw danych mogą wywnioskować jeden (poprzez jego InferXmlSchema metody) z danych w dokumencie XML, który jest skonstruowany w sposób relacyjnej.Aby uzyskać więcej informacji na temat schematów XML, zobacz Building XML Schemas.

  • Można wygenerować klasa dataset, która zawiera informacje o schemacie, do definiowania struktury danych.Jest to znane jako wpisane dataset.Informacje na temat tworzenia maszynowy zestawu danych, zobacz Jak: Tworzenie zestawu danych wpisywanych.

  • Do zestawu danych przy użyciu zestawu danych można odczytać dokument XML lub strumienia ReadXml metody i zapisu obiektu dataset out jako XML przy użyciu zestawu danych WriteXml metody.Ponieważ XML jest formatem standard wymiany danych między różnymi aplikacjami, oznacza to, że można załadować obiektu dataset w formacie XML informacje wysyłane przez inne aplikacje.Podobnie dataset można zapisywać swoje dane w strumieniu XML lub dokument może być współużytkowane z innymi aplikacjami lub po prostu przechowywane w standardowym formacie.

  • Można utworzyć widok XML ( XmlDataDocument obiektu) zawartości zestawu danych lub danych tabeli i następnie wyświetlać i manipulowania danymi przy użyciu relacyjnej metody (z zastosowaniem zestawu danych) lub metody XML.Dwa widoki są automatycznie synchronizowane, jak zostały zmienione.

Wpisane kontra bez typu zestawów danych

Pismo dataset jest dataset, która wywodzi się najpierw z podstawy DataSet klasy, a następnie używa informacji z Projektant Dataset, który jest przechowywany w pliku xsd, aby wygenerować nową klasę jednoznacznie określony zestaw danych.Informacje ze schematu (tabel, kolumn i tak dalej) jest generowany i skompilowany do tej klasy nowego zestawu danych jako zestaw Pierwszorzędna obiektów i właściwości.Ponieważ maszynowy dataset dziedziczy od podstawy DataSet klasy, klasy maszynowy zakłada wszystkie funkcje DataSet klasy i mogą być używane z metodami, które wystąpienie DataSet klasy jako parametr

Bez typu zestawu danych, natomiast ma bez odpowiedniego wbudowanego schematu.Jako w maszynowy dataset, bez typu zestawu danych zawiera tabele, kolumny i tak dalej — ale te są narażone tylko jako kolekcje.(Jednak w po ręcznego utworzenia tabel i innych elementów danych w zestawie bez typu danych, można wyeksportować strukturze dataset, jako schematu przy użyciu zestawu danych WriteXmlSchema metody.)

8bw9ksd6.collapse_all(pl-pl,VS.110).gifKontrastujących w zestawach danych wpisywanych i bez dostępu do danych

Klasa dla wpisywanych dataset ma model obiektowy, w którym jego właściwości przybrać rzeczywistej nazwy tabel i kolumn.Na przykład jeśli pracujesz z wpisywanych zestawu danych, można się odwołać kolumny, przy użyciu kodu, takie jak:

' This accesses the CustomerID column in the first row of the Customers table.
Dim customerIDValue As String = NorthwindDataSet.Customers(0).CustomerID
// This accesses the CustomerID column in the first row of the Customers table.
string customerIDValue = northwindDataSet.Customers[0].CustomerID;

Z drugiej strony Jeśli pracujesz z dataset bez typu, jest równoważny kod:

Dim customerIDValue As String =
    CType(dataset1.Tables("Customers").Rows(0).Item("CustomerID"), String)
string customerIDValue = (string)
    dataset1.Tables["Customers"].Rows[0]["CustomerID"];

Pismo dostępu jest nie tylko ułatwia czytanie, ale jest w pełni obsługiwany przez technologię IntelliSense w Visual StudioEdytor kodu. Oprócz łatwiej pracować składnia dla zestawu danych wpisywanych zawiera typ kontroli w czasie kompilacji, co pozwala znacznie zmniejszyć prawdopodobieństwo wystąpienia błędów w przypisywanie wartości do członków zestawu danych.Jeśli zmienisz nazwę kolumny w sieci DataSet i następnie kompilować aplikacji, pojawi się błąd kompilacji.Klikając dwukrotnie błąd kompilacji w Listy zadań, można przejść bezpośrednio do linii lub linii kodu, które odwołują się do starej nazwy kolumny.Dostęp do tabel i kolumn w maszynowy dataset jest również nieznacznie szybciej w czasie wykonywania, ponieważ program access ustala się w czasie kompilacji, a nie za pośrednictwem kolekcje w czasie wykonywania.

Mimo że zestawów danych wpisywanych mają wiele zalet, istnieją różne okoliczności w jakich przydaje się bez typu dataset.Scenariusz najbardziej oczywiste jest, gdy schematu nie jest dostępna dla zestawu danych.Taka sytuacja może wystąpić, jeśli, na przykład, jeśli aplikacja jest interakcja ze składnikiem, który zwraca dataset, ale nie wiadomo z góry jest jego struktury.Podobnie istnieją razy podczas pracy z danymi, które nie ma struktury statycznej, przewidywalny; w takim przypadku jest niepraktyczne użyć dataset maszynowy, ponieważ trzeba będzie ponownie wygenerować klasa dataset wpisywanych z każdą zmianę w strukturze danych.

Mówiąc bardziej ogólnie są wiele razy może utworzyć obiektu dataset dynamicznie bez schematu, które są dostępne.W takim przypadku obiekt dataset jest po prostu wygodnym struktury, w którym można przechowywać informacje, tak długo, jak dane, może być reprezentowana w sposób relacyjnej.W tym samym czasie można korzystać z funkcji zestawu danych, takich jak możliwość serializowania informacje przekazywane do innego procesu lub do zapisywania pliku XML.

DataSet wielkości liter

W obrębie obiektu dataset, nazwy tabel i kolumn są domyślnie, bez uwzględniania wielkości liter — to znaczy tabeli w zestawie danych o nazwie "Klienci" może również określane jako "klienci". Odpowiada to konwencje nazewnictwa w wielu baz danych, łącznie z domyślne zachowanie programu SQL Server, gdzie nazwy elementów danych nie mogą być odróżnione tylko przez przypadek.

[!UWAGA]

W przeciwieństwie do zestawów danych dokumenty XML rozróżniają wielkość liter, nazwy elementów danych zdefiniowanych w schematach uwzględniana jest wielkość liter.Schemat protokołu umożliwia na przykład schemat, aby zdefiniować tabelę o nazwie "Klienci" i inną tabelę o nazwie "klienci". Może to spowodować w kolizji nazw schematu, który zawiera elementy, które różnią się tylko wielkością liter jest używany do generowania klasa dataset.

Jednakże liter może być czynnikiem, w jaki sposób dane są interpretowane wewnątrz zestawu danych.Na przykład w filtrowania danych w tabeli dataset, kryteria wyszukiwania mogą zwracać różne wyniki w zależności od tego, czy wynikiem porównania jest rozróżniana wielkość liter, lub nie.Można kontrolować rozróżniane przez filtrowanie, wyszukiwanie i sortowanie danych przez ustawienie zestawu danych CaseSensitive właściwości.Domyślnie, wszystkie tabele w zestawie danych dziedziczą wartość tej właściwości.(Można zastąpić tę właściwość dla każdej tabeli indywidualnych, ustawiając w tabeli CaseSensitive właściwości.)

Powiązane tabele i obiekty DataRelation

Jeśli masz wiele tabel w elemencie dataset może być związana informacje w tabelach.Element dataset nie nieodłączne takich związków; w związku z tym, aby pracować z danymi w tabelach pokrewnych, można utworzyć DataRelation obiektów, które opisują relacje między tabelami w zestawie danych.Aby uzyskać więcej informacji, zobacz Jak: dostęp rekordów w powiązanych DataTables.DataRelationobiekty można programowo pobrać powiązanych rekordach podrzędnych dla rekordu nadrzędnego i rekord nadrzędny z rekord podrzędny.Aby uzyskać więcej informacji, zobacz Relacje w zestawach danych.Jeśli baza danych zawiera relacje między dwoma lub więcej tabel, narzędzia projektowania, zostanie automatycznie utworzony DataRelation obiektów dla Ciebie.

Załóżmy na przykład, klientów i kolejność danych, takich jak bazy danych Northwind.Customers Tabeli może zawierać rekordy, takie jak następujące:

CustomerID   CompanyName               City
ALFKI        Alfreds Futterkiste       Berlin
ANTON        Antonio Moreno Taquerias  Mexico D.F.
AROUT        Around the Horn           London

Zestaw danych może także zawierać innej tabeli, z informacji o zamówieniu.Orders Tabela zawiera identyfikator klienta jako kolumny klucza obcego.Wybranie tylko niektóre kolumny w Orders tabeli, to może wyglądać następująco:

OrderId    CustomerID    OrderDate
10692      ALFKI         10/03/1997
10702      ALFKI         10/13/1997
10365      ANTON         11/27/1996
10507      ANTON         4/15/1997

Ponieważ każdy klient może mieć więcej niż jedno zamówienie, istnieje relacja jeden do wielu między klienci i zamówienia.Na przykład w powyższej tabeli Klient ALFKI ma dwa zamówienia.

Można użyć DataRelation obiekt, aby pobrać rekordy pokrewne z tabeli podrzędny lub nadrzędny.Na przykład podczas pracy z rekordu klienta JACKA opisujące, można uzyskać kolekcji rekordy opisujące zamówienia tego klienta.Aby uzyskać więcej informacji, zobacz GetChildRows.Podobnie podczas pracy z rekordem, opisujące 10507 IDZamówienia, można nawigować obiektu relacji, aby uzyskać rekordu nadrzędnego JACKA.Aby uzyskać więcej informacji, zobacz GetParentRow.

Ograniczenia

W większości baz danych zestawów danych obsługuje ograniczenia jako sposobem zapewnienia integralności danych.Ograniczenia są reguły, które są stosowane, gdy wiersze są wstawiane, zaktualizowany lub usunięty w tabeli.Można zdefiniować dwa rodzaje ograniczeń:

  • A unikatowy ograniczenie, które sprawdza, czy nowe wartości w kolumnie są unikatowe w tabeli.

  • A klucz obcy ograniczenie, które określa zasady dotyczące powiązane rekordy podrzędne powinny zostać uaktualnione, gdy rekord w tabeli wzorcowej jest zaktualizowany lub usunięty.Na przykład ograniczenia na klucz obcy sprawdza, czy przed umożliwiających tworzenie rekordy podrzędne jest rekord nadrzędny.

W elemencie dataset ograniczenia są związane z poszczególnych tabel (ograniczenia klucza obcego) lub kolumny (ograniczenia unique, który gwarantuje, że wartości w kolumnie są unikatowe).Warunki ograniczające są implementowane jako obiekty typu UniqueConstraint lub ForeignKeyConstraint.Następnie są one dodawane do Constraints kolekcji DataTable.Ograniczenie typu unique, alternatywnie może być określony przez ustawienie po prostu Unique właściwość DataColumn do true.

Sam zestaw danych obsługuje wartość Boolean EnforceConstraints właściwość, która określa, czy lub nie zostaną wymuszone ograniczenia.Domyślnie ta właściwość jest ustawiona na true.Istnieją jednak czas, kiedy jest przydatne tymczasowo wyłączyć ograniczenia.Najczęściej jest to są zmieniane rekordu w taki sposób, że tymczasowo spowoduje nieprawidłowy stan.Po zakończeniu zmiana (i tym samym powracania do prawidłowego stanu) można ponownie włączyć ograniczeń.

W Visual Studio, niejawnie utworzyć ograniczenia podczas definiowania elementu dataset.Przez dodanie klucza podstawowego do obiektu dataset, niejawnie utworzyć ograniczenie typu unique do kolumny klucza podstawowego.Można określić ograniczenia unique dla pozostałych kolumn, ustawiając ich Unique właściwość, aby true.

Utworzyć ograniczenia klucza obcego, tworząc DataRelation obiektu dataset.Oprócz umożliwiając programowo uzyskać informacje na temat rekordy pokrewne, DataRelation obiektu pozwala zdefiniować zasady ograniczenia na klucz obcy.

Rozszerzone właściwości zestawu danych

Właściwości rozszerzone dostarczają mapowania nazw podczas konfliktów nazw są napotkanych w czasie procesu wytwarzania zestawu danych z pliku xsd.Identyfikator pliku xsd różni się od obliczanej nazwą utworzoną przez dataset generator, właociwooci rozszerzonych jest dodawany do zestawu danych w msprop obszaru nazw.W poniższej tabeli przedstawiono możliwe rozszerzone właściwości, które mogą być generowane:

Obiekt

Właściwości rozszerzone

DataSet

msprop:Generator_UserDSName

msprop:Generator_DataSetName

DataTable

msprop:Generator_UserTableName

msprop:Generator_TablePropName

msprop:Generator_TableVarName

msprop:Generator_TableClassName

msprop:Generator_RowClassName

msprop:Generator_RowEvHandlerName

msprop:Generator_RowEvArgName

DataColumn

msprop:Generator_UserColumnName

msprop:Generator_ColumnPropNameInTable

msprop:Generator_ColumnVarNameInTable

msprop:Generator_ColumnPropNameInRow

Zobacz też

Koncepcje

Przygotowanie aplikacji do odbierania danych

Pobieranie danych do aplikacji

Wiązanie formantów z danych w programie Visual Studio

Edytowanie danych w aplikacji

Sprawdzanie poprawności danych

Zapisywanie danych

Inne zasoby

Omówienie aplikacji danych w programie Visual Studio

Połączenie z danymi w programie Visual Studio