Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Klasy DataSet i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Technologie te są szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian w bazie danych. Mimo że zestawy danych są sprawdzoną pomyślną technologią, zalecaną metodą dla nowych aplikacji platformy .NET jest użycie platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma bardziej prosty interfejs programowania.
Jednym z najbardziej typowych scenariuszy tworzenia aplikacji jest wyświetlanie danych w formularzu w aplikacji systemu Windows, edytowanie danych i wysyłanie zaktualizowanych danych z powrotem do bazy danych. Ten przewodnik tworzy formularz, który wyświetla dane z dwóch powiązanych tabel i pokazuje, jak edytować rekordy i zapisywać zmiany z powrotem w bazie danych. W tym przykładzie użyto tabel Customers i Orders z przykładowej bazy danych Northwind.
Dane w aplikacji można zapisywać z powrotem w bazie danych, wywołując Update metodę TableAdapter. Podczas przeciągania tabel z okna Źródła danych na formularz kod wymagany do zapisania danych jest automatycznie dodawany. Wszelkie dodatkowe tabele dodawane do formularza wymagają ręcznego dodania tego kodu. W tym przewodniku pokazano, jak dodać kod do zapisywania aktualizacji z więcej niż jednej tabeli.
Zadania przedstawione w tym przewodniku obejmują:
Tworzenie i konfigurowanie źródła danych w aplikacji za pomocą Kreatora konfiguracji źródła danych.
Ustawianie kontrolek elementów w oknie Źródła danych. Więcej informacji znajdziesz w Ustawianie kontrolki do utworzenia podczas przeciągania z okna Źródła danych.
Tworzenie kontrolek powiązanych z danymi przez przeciąganie elementów z okna Źródła danych na formularz.
Modyfikowanie kilku rekordów w każdej tabeli w zestawie danych.
Modyfikowanie kodu w celu wysłania zaktualizowanych danych w zestawie danych z powrotem do bazy danych.
Wymagania wstępne
Do ukończenia tego samouczka potrzebne są obciążenia tworzenia aplikacji klasycznych platformy .NEToraz przechowywania i przetwarzania danych zainstalowanych w programie Visual Studio. Aby je zainstalować, otwórz Instalator programu Visual Studio i wybierz Modyfikuj (lub Więcej>Modyfikuj) obok wersji programu Visual Studio, którą chcesz zmodyfikować. Zobacz Modyfikowanie programu Visual Studio.
W tym przewodniku użyto bazy danych SQL Server Express LocalDB i przykładowej bazy danych Northwind.
Jeśli nie masz bazy danych LOCALDB programu SQL Server Express, zainstaluj ją ze strony pobierania programu SQL Server Express lub za pośrednictwem Instalatora programu Visual Studio. W instalatorze programu Visual Studiomożna zainstalować bazę danych SQL Server Express LocalDB w ramach magazynu danych i przetwarzania obciążenia lub jako pojedynczy składnik.
Zainstaluj przykładową bazę danych Northwind, wykonując następujące kroki:
W programie Visual Studio otwórz okno eksploratora obiektów programu SQL Server. (Eksplorator obiektów programu SQL Server jest instalowany w ramach obciążenia Magazyn danych i przetwarzanie w Instalatorze programu Visual Studio). Rozwiń węzeł SQL Server. Kliknij prawym przyciskiem myszy wystąpienie bazy danych LocalDB i wybierz pozycję Nowe zapytanie.
Zostanie otwarte okno edytora zapytań.
Skopiuj skrypt Northwind Transact-SQL do schowka. Ten skrypt języka T-SQL tworzy bazę danych Northwind od podstaw i wypełnia ją danymi.
Wklej skrypt języka T-SQL do edytora zapytań, a następnie wybierz przycisk Wykonaj.
Po krótkim czasie zapytanie zakończy działanie i zostanie utworzona baza danych Northwind.
Tworzenie aplikacji Windows Forms
Utwórz nowy projekt aplikacji Windows Forms dla języka C# lub Visual Basic. Nadaj projektowi nazwę UpdateMultipleTablesWalkthrough.
Tworzenie źródła danych
Ten krok tworzy źródło danych z bazy danych Northwind przy użyciu Kreatora konfiguracji źródła danych. Aby utworzyć połączenie, musisz mieć dostęp do przykładowej bazy danych Northwind. Aby uzyskać informacje na temat konfigurowania przykładowej bazy danych Northwind, zobacz Instrukcje: instalowanie przykładowych baz danych.
W menu Dane wybierz pozycję Pokaż źródła danych.
Zostanie otwarte okno Źródła danych .
W oknie Źródła danych wybierz pozycję Dodaj nowe źródło danych , aby uruchomić Kreatora konfiguracji źródła danych.
Na ekranie Wybierz typ źródła danych wybierz pozycję Baza danych, a następnie wybierz pozycję Dalej.
Na ekranie Wybieranie połączenia danych wykonaj jedną z następujących czynności:
Jeśli na liście rozwijanej jest dostępne połączenie danych z przykładową bazą danych Northwind, wybierz je.
— lub —
Wybierz pozycję Nowe połączenie , aby otworzyć okno dialogowe Dodawanie/modyfikowanie połączenia .
Jeśli baza danych wymaga hasła, wybierz opcję dołączenia poufnych danych, a następnie wybierz przycisk Dalej.
W polu Zapisz parametry połączenia w pliku Konfiguracji aplikacji wybierz pozycję Dalej.
Na ekranie Wybieranie obiektów bazy danych rozwiń węzeł Tabele .
Wybierz tabele Customers and Orders (Klienci i Zamówienia), a następnie wybierz pozycję Finish (Zakończ).
Zestaw NorthwindDataSet jest dodawany do projektu, a tabele są wyświetlane w oknie Źródła danych .
Ustaw kontrolki do utworzenia
W tym przewodniku Customers dane w tabeli znajdują się w układzie Szczegóły , w którym dane są wyświetlane w poszczególnych kontrolkach. Dane z Orders tabeli są w układzie siatki , który jest wyświetlany w kontrolce DataGridView .
Aby ustawić typ upuszczania elementów w oknie Źródła danych
W oknie Źródła danych rozwiń węzeł Klienci .
W węźle Klienci wybierz pozycję Szczegóły z listy kontrolek, aby zmienić kontrolkę tabeli Customers na poszczególne kontrolki. Więcej informacji znajdziesz w Ustawianie kontrolki do utworzenia podczas przeciągania z okna Źródła danych.
Tworzenie formularza powiązanego z danymi
Kontrolki powiązane z danymi można utworzyć, przeciągając elementy z okna Źródła danych na formularz.
Przeciągnij główny węzeł Klienci z okna Źródła danych do formularza Form1.
Kontrolki powiązane z danymi z etykietami opisowymi są wyświetlane w formularzu wraz z paskiem narzędzi (BindingNavigator) umożliwiającym nawigowanie po rekordach. Elementy NorthwindDataSet,
CustomersTableAdapter, BindingSource i BindingNavigator pojawią się na pasku składników.Przeciągnij powiązany węzeł Zamówienia z okna Źródła danych na Form1.
Uwaga / Notatka
Powiązany węzeł Zamówienia znajduje się poniżej kolumny Faks i jest węzłem podrzędnym węzła Klienci .
Kontrolka DataGridView i pasek narzędzi (BindingNavigator) do nawigowania po rekordach są wyświetlane w formularzu. Element
OrdersTableAdapteri BindingSource pojawi się w zasobniku składników.
Dodawanie kodu w celu zaktualizowania bazy danych
Bazę danych można zaktualizować, wywołując Update metody klasy Customers oraz klasy Orders TableAdapters. Domyślnie procedura obsługi zdarzeń dla przycisku Zapisz jest dodawana do kodu formularza, aby wysyłać aktualizacje do bazy danych. Ta procedura modyfikuje kod w celu wysyłania aktualizacji we właściwej kolejności. Eliminuje to możliwość wystąpienia błędów spójności referencyjnej. Kod implementuje również obsługę błędów przez zawijanie wywołania aktualizacji w bloku try-catch. Kod można zmodyfikować zgodnie z potrzebami aplikacji.
Uwaga / Notatka
W celu zapewnienia przejrzystości ten przewodnik nie używa transakcji. Jeśli jednak aktualizujesz co najmniej dwie powiązane tabele, uwzględnij całą logikę aktualizacji w ramach transakcji. Transakcja jest procesem, który zapewnia, że wszystkie powiązane zmiany w bazie danych zakończą się sukcesem, zanim zostaną zatwierdzone. Aby uzyskać więcej informacji, zobacz Transakcje i Współbieżność.
Aby dodać logikę aktualizacji do aplikacji
Wybierz przycisk Zapisz w pliku BindingNavigator. Spowoduje to otwarcie edytora kodu w obsługiwaczu zdarzeń
bindingNavigatorSaveItem_Click.Zastąp kod w procedurze obsługi zdarzeń, aby wywołać
Updatemetody powiązanych elementów TableAdapters. Poniższy kod najpierw tworzy trzy tymczasowe tabele danych do przechowywania zaktualizowanych informacji dla każdego DataRowState (Deleted, Added, i Modified). Aktualizacje są uruchamiane w odpowiedniej kolejności. Kod powinien wyglądać następująco:this.Validate(); this.ordersBindingSource.EndEdit(); this.customersBindingSource.EndEdit(); NorthwindDataSet.OrdersDataTable deletedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Deleted); NorthwindDataSet.OrdersDataTable newOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Added); NorthwindDataSet.OrdersDataTable modifiedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Modified); try { // Remove all deleted orders from the Orders table. if (deletedOrders != null) { ordersTableAdapter.Update(deletedOrders); } // Update the Customers table. customersTableAdapter.Update(northwindDataSet.Customers); // Add new orders to the Orders table. if (newOrders != null) { ordersTableAdapter.Update(newOrders); } // Update all modified Orders. if (modifiedOrders != null) { ordersTableAdapter.Update(modifiedOrders); } northwindDataSet.AcceptChanges(); } catch (System.Exception ex) { MessageBox.Show("Update failed"); } finally { if (deletedOrders != null) { deletedOrders.Dispose(); } if (newOrders != null) { newOrders.Dispose(); } if (modifiedOrders != null) { modifiedOrders.Dispose(); } }
Testowanie aplikacji
Naciśnij klawisz F5.
Wprowadź pewne zmiany w danych co najmniej jednego rekordu w każdej tabeli.
Wybierz przycisk Zapisz .
Sprawdź wartości w bazie danych, aby sprawdzić, czy zmiany zostały zapisane.