Udostępnij za pośrednictwem


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ą:

Wymagania wstępne

W celu przeprowadzenia tego instruktażu będą potrzebne:

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

  1. Z pliku menu, tworzenie nowego projektu.

  2. Nazwa projektu UpdateMultipleTablesWalkthrough.

  3. 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

  1. Na danych menu, kliknij przycisk Pokaż źródeł danych.

  2. W Źródła danych okna, kliknij Dodać nowe źródło danych uruchomić Kreatora konfiguracji źródła danych.

  3. Wybierz bazy danych na Wybierz typ źródła danych stronę, a następnie kliknij przycisk Dalej.

  4. 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).

  5. Jeśli baza danych wymaga podania hasła, zaznacz opcję zawierają dane poufne, a następnie kliknij przycisk Dalej.

  6. Kliknij przycisk Dalej na zapisać ciąg połączenia w pliku konfiguracyjnym aplikacji strony.

  7. Rozwiń węzeł tabel węzeł na Wybierz obiekty bazy danych strony.

  8. 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

  1. Rozwiń węzeł Klienci węzeł w Źródła danych okna.

  2. 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

  1. 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.

  2. 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

  1. Kliknij dwukrotnie zapisać przycisk na BindingNavigator , aby otworzyć Edytor kodu do bindingNavigatorSaveItem_Click programu obsługi zdarzeń.

  2. 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ę

  1. Naciśnij klawisz F5.

  2. Niektóre zmiany do danych z jednego lub wielu rekordów w każdej tabeli.

  3. Naciśnij klawisz zapisać przycisku.

  4. 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ą:

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

Edytowanie danych w aplikacji

Sprawdzanie poprawności danych

Zapisywanie danych

Inne zasoby

Instruktaże danych

Omówienie aplikacji danych w programie Visual Studio

Połączenie z danymi w programie Visual Studio