Instruktaż: Zapisywanie danych do bazy danych (wielu tabel)
Jednym z najbardziej typowe scenariusze w rozwoju aplikacji jest do wyświetlania danych w formularzu w aplikacji Windows, edytować dane i wysyłać zaktualizowane dane z bazą.W tym instruktażu tworzy formularz, który wyświetla dane z dwóch tabel pokrewnych i pokazuje, jak edytować rekordy i zapisać zmiany w bazie danych.W tym przykładzie użyto Customers i Orders tabele z bazy danych Northwind.
Dane można zapisać w aplikacji z bazą, wywołując Update metody TableAdapter.Podczas przeciągania elementów z Źródła danych okna, kod, aby zapisać dane, jest automatycznie dodawany do pierwszej tabeli do formularza.Wszelkie dodatkowe tabele dodane do formularza wymagają ręcznego dodawania kodu wymaganych do zapisania danych.W tym instruktażu pokazano, jak dodać kod, aby zapisać aktualizacje z więcej niż jednej tabeli.
[!UWAGA]
Okien dialogowych i poleceń menu, którą widzisz mogą różnić się od tych opisanych w pomocy, w zależności od tego, aktywne ustawienia lub edition.Aby zmienić ustawienia, wybierz polecenie Importuj i Eksportuj ustawienia na Narzędzia menu.Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.
W tym instruktażu zadania obejmują:
Tworzenie nowego Aplikacji Windows projektu.
Tworzenie i konfigurowanie źródła danych w aplikacji z Kreator konfiguracji źródła danych.
Kontroluje, czy elementy w Okno źródła danych.Aby uzyskać więcej informacji, zobacz Jak: formant ma zostać utworzony podczas przeciągania w oknie źródła danych.
Tworzenie formantów powiązanych danych przez przeciąganie elementów z Źródła danych okno formularza.
Modyfikowanie kilka rekordów w każdej tabeli w zestawie danych.
Modyfikowanie kodu, aby wysyłać zaktualizowane dane w zestawie danych z bazą.
Wymagania wstępne
W celu przeprowadzenia tego instruktażu będą potrzebne:
- Dostęp do bazy danych Northwind.Aby uzyskać więcej informacji, zobacz Jak: Instalowanie przykładowe bazy danych.
Tworzenie aplikacji systemu Windows
Pierwszym krokiem jest utworzenie Aplikacji Windows.Przypisywanie nazwę projektu jest opcjonalne na tym etapie, ale firma Microsoft będzie nadaj mu nazwę, ponieważ firma Microsoft są planowania na zapisanie go później.
Aby utworzyć nowy projekt aplikacji systemu Windows
Z pliku menu, tworzenie nowego projektu.
Nazwa projektu UpdateMultipleTablesWalkthrough.
Wybierz Aplikacji Windows i kliknij przycisk OK.Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji klienta.
UpdateMultipleTablesWalkthrough projektu jest tworzony i dodawany do Solution Explorer.
Tworzenie źródła danych
W tym kroku tworzy źródło danych bazy danych Northwind korzystania z Kreatora konfiguracji źródła danych.Musi mieć dostęp do przykładowej bazy danych Northwind do utworzenia połączenia.Aby uzyskać informacje na temat konfigurowania przykładowej bazy danych Northwind, zobacz Jak: Instalowanie przykładowe bazy danych.
Aby utworzyć źródło danych
Na danych menu, kliknij przycisk Pokaż źródeł danych.
W Źródła danych okna, kliknij Dodać nowe źródło danych uruchomić Kreatora konfiguracji źródła danych.
Wybierz bazy danych na Wybierz typ źródła danych stronę, a następnie kliknij przycisk Dalej.
Na Wybierz połączenie danych do strony, jedną z następujących czynności:
Jeśli połączenie danych z przykładowej bazy danych Northwind jest dostępna na liście rozwijanej, należy go zaznaczyć.
- lub -
Wybierz Nowe połączenie otworzyć Dodawanie i modyfikowanie połączenia okno dialogowe.Aby uzyskać więcej informacji, zobacz Dodawanie/modyfikowanie połączeń, okno dialogowe (Ogólne).
Jeśli baza danych wymaga podania hasła, zaznacz opcję zawierają dane poufne, a następnie kliknij przycisk Dalej.
Kliknij przycisk Dalej na zapisać ciąg połączenia w pliku konfiguracyjnym aplikacji strony.
Rozwiń węzeł tabel węzeł na Wybierz obiekty bazy danych strony.
Wybierz Klienci i zamówienia tabel, a następnie kliknij przycisk Zakończenie.
NorthwindDataSet jest dodawany do projektu i tablice pojawiają się w Źródła danych okna.
Określa, które ma zostać utworzony
Do tego przeglądu danych w Customers tabeli będzie się w Szczegóły układ, w którym dane są wyświetlane w poszczególnych formantów.Dane z Orders tabeli będzie się w siatki układu wyświetlane w DataGridView kontroli.
Aby ustawić typ upuszczania dla elementów w oknie źródła danych
Rozwiń węzeł Klienci węzeł w Źródła danych okna.
Zmienianie formantu z klientów tabeli do poszczególnych formantów, wybierając Szczegóły z listy kontroli na klientów węzła.Aby uzyskać więcej informacji, zobacz Jak: formant ma zostać utworzony podczas przeciągania w oknie źródła danych.
Tworzenie formularza powiązanego z danymi
Formanty powiązane z danymi można utworzyć, przeciągając elementy z Źródła danych okno formularza.
Aby utworzyć formanty powiązane z danymi formularza
Przeciągnij główne Klienci węzła z Źródła danych okna na formularz Form1.
Formanty powiązane z danymi z opisowe etykiety są wyświetlane w formularzu, wraz z pasek narzędzi (BindingNavigator) do nawigowania między rekordami.A NorthwindDataSet, CustomersTableAdapter, BindingSource, i BindingNavigator są wyświetlane w panelu komponentów.
Przeciągnij odnośnych zamówienia węzła z Źródła danych okna na formularz Form1.
[!UWAGA]
Pokrewne zamówienia węzeł znajduje się poniżej Faks kolumny i jest węzeł podrzędny z Klienci węzła.
A DataGridView kontroli i pasek narzędzi (BindingNavigator) do nawigowania między rekordami wyświetlane w formularzu.OrdersTableAdapter i BindingSource są wyświetlane w panelu komponentów.
Dodawanie kodu do aktualizacji bazy danych
Można zaktualizować bazy danych, wywołując Update metody Klienci i zamówienia TableAdapters.Domyślnie, moduł obsługi zdarzenia BindingNavigatorna zapisać do kodu formularza, aby wysyłać aktualizacje bazy danych zostanie dodany przycisk.Procedura ta modyfikuje ten kod, aby wysłać aktualizacje w prawidłowej kolejności, aby wyeliminować możliwość podnoszenia błędy więzy integralności.Kod implementuje także obsługa błędów przez zawijania aktualizację zgłoszenia w bloku try-catch.Można zmodyfikować kod, stosownie do potrzeb aplikacji.
[!UWAGA]
Dla jasności w tym instruktażu nie używać transakcji, ale jeśli aktualizowane są dwa lub więcej tabel pokrewnych, następnie należy dołączyć wszystkie logikę aktualizacji w obrębie transakcji.Transakcja jest procesem, który gwarantuje wszystkich powiązanych zmiany w bazie danych są pomyślne przed wykonaniem jakichkolwiek zmian.Aby uzyskać więcej informacji, zobacz Performing Transactions.
Aby dodać logikę aktualizacji do aplikacji
Kliknij dwukrotnie zapisać przycisk na BindingNavigator , aby otworzyć Edytor kodu do bindingNavigatorSaveItem_Click programu obsługi zdarzeń.
Zastąp kod w procedurze obsługi zdarzenia do wywołania Update metod powiązanych TableAdapters.Poniższy kod najpierw tworzy trzy tabele tymczasowe danych do przechowywania zaktualizowanych informacji dla każdego DataRowState (Deleted, Added, i Modified).Następnie aktualizacje są wykonywane w prawidłowej kolejności.Kod powinien wyglądać następująco:
Me.Validate() Me.OrdersBindingSource.EndEdit() Me.CustomersBindingSource.EndEdit() Dim deletedOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.OrdersDataTable) Dim newOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added), NorthwindDataSet.OrdersDataTable) Dim modifiedOrders As NorthwindDataSet.OrdersDataTable = CType( NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Modified), NorthwindDataSet.OrdersDataTable) Try ' Remove all deleted orders from the Orders table. If Not deletedOrders Is Nothing Then OrdersTableAdapter.Update(deletedOrders) End If ' Update the Customers table. CustomersTableAdapter.Update(NorthwindDataSet.Customers) ' Add new orders to the Orders table. If Not newOrders Is Nothing Then OrdersTableAdapter.Update(newOrders) End If ' Update all modified Orders. If Not modifiedOrders Is Nothing Then OrdersTableAdapter.Update(modifiedOrders) End If NorthwindDataSet.AcceptChanges() Catch ex As Exception MsgBox("Update failed") Finally If Not deletedOrders Is Nothing Then deletedOrders.Dispose() End If If Not newOrders Is Nothing Then newOrders.Dispose() End If If Not modifiedOrders Is Nothing Then modifiedOrders.Dispose() End If End Try
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
Aby przetestować aplikację
Naciśnij klawisz F5.
Niektóre zmiany do danych z jednego lub wielu rekordów w każdej tabeli.
Naciśnij klawisz zapisać przycisku.
Sprawdź wartości w bazie danych, aby zweryfikować, że zmiany zostały zapisane.
Następne kroki
W zależności od wymagań aplikacji istnieje kilka czynności, które chcesz wykonać po utworzeniu formularza powiązanego z danymi w aplikacji systemu Windows.Niektóre rozszerzenia, które mogłoby się przyczynić do tego instruktażu obejmują:
Dodawanie funkcji wyszukiwania w formularzu.Aby uzyskać więcej informacji, zobacz Jak: Dodawanie sparametryzowanych kwerend do aplikacji Windows Forms.
Edytowanie źródła danych, aby dodać lub usunąć obiekty bazy danych.Aby uzyskać więcej informacji, zobacz Jak: edytowanie zestawu danych.
Zobacz też
Koncepcje
Co nowego w projektowaniu danych aplikacji w Visual Studio 2012
Wiązanie formantów Windows Forms do danych w programie Visual Studio
Przygotowanie aplikacji do odbierania danych
Pobieranie danych do aplikacji
Wiązanie formantów z danych w programie Visual Studio
Sprawdzanie poprawności danych