Udostępnij za pośrednictwem


Wskazówki: zapisywanie danych w bazie danych (wiele tabel)

Jedną z najbardziej typowe scenariusze się tworzeniem aplikacji jest do wyświetlenia danych formularza w aplikacji systemu Windows, edytowanie danych i odesłania zaktualizowane dane do bazy danych.Niniejszy przewodnik 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 zastosowano Customers i Orders tabele w bazie danych Northwind.

Można zapisać danych w aplikacji do bazy danych przez wywołanie metody Update metody Obiekt TableAdapter.Podczas przeciągania elementów z źródła danych okna, kod, aby zapisać danych jest automatycznie dodawane do pierwszej tabeli na formularzu.Dodatkowe tabele dodany do formularza wymaga ręcznego dodawania kodu wymagane do zapisywania danych.Niniejszy przewodnik pokazuje, jak dodać kod, aby zapisać aktualizacje z więcej niż jednej tabeli.

[!UWAGA]

Okna dialogowe i polecenia menu mogą się różnić od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Aby zmienić swoje ustawienia, wybierz Importuj i eksportuj ustawienia w menu Narzędzia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Zadania zilustrowane w tym przewodniku obejmują:

Wymagania wstępne

Aby można było ukończyć tej procedury, należy mieć:

Tworzenie aplikacji systemu Windows

Pierwszym krokiem jest utworzenie aplikacji systemu Windows.Przypisanie nazwy do projektu jest opcjonalna na tym etapie, ale firma Microsoft będzie nadaj jej nazwę, ponieważ firma Microsoft są planowania na zapisanie go później.

Aby utworzyć nowy projekt aplikacji systemu Windows

  1. Z pliku menu, Utwórz nowy projekt.

  2. Nadaj nazwę projektowi UpdateMultipleTablesWalkthrough.

  3. Wybierz aplikacji systemu Windows i kliknij przycisk OK.Aby uzyskać więcej informacji, zobacz Wdrażanie aplikacji klienta za pomocą programu .NET Framework.

    UpdateMultipleTablesWalkthrough projektu zostało utworzone i dodane do Eksploratora rozwiązań.

Tworzenie źródła danych

Spowoduje to utworzenie źródła danych z za pomocą bazy danych Northwind Kreatora konfiguracji źródła danych.Musisz mieć dostęp do przykładowej bazy danych Northwind do utworzenia połączenia.Aby uzyskać informacje o konfigurowaniu bazie danych Northwind, zobacz Porady: instalacja przykładowych baz danych.

Aby utworzyć źródło danych

  1. W menu Dane kliknij przycisk Pokaż źródła danych.

  2. W źródła danych okna, kliknij przycisk Dodaj nowe źródło danych można uruchomić Kreatora konfiguracji źródła danych.

  3. Wybierz Baza danych na stronie Wybierz typ źródła danych, a następnie kliknij Dalej.

  4. Na Wybierz połączenie danych do strony, jedną z następujących czynności:

    • Jeśli połączenie danych z bazie danych Northwind jest dostępna na liście rozwijanej, zaznacz go.

      —lub—

    • Wybierz nowe połączenie można otworzyć Dodaj/Modyfikuj połączenia okno dialogowe.

  5. Jeśli baza danych wymaga hasła, wybierz opcję dołączenia danych poufnych, a następnie kliknij przycisk Dalej.

  6. Na stronie Zapisz ciąg połączeń do pliku konfiguracyjnego aplikacji kliknij Dalej.

  7. Rozwiń węzeł Tabele na stronie Wybierz obiekty bazy danych.

  8. Wybierz klienci i zamówienia tabel, a następnie kliknij przycisk Zakończ.

    NorthwindDataSet jest dodawany do projektu i tablice pojawiają się w źródła danych okna.

Określa do utworzenia

Dla tej procedury dane w Customers tabeli będzie dostępna Szczegóły układu, w którym dane są wyświetlane w poszczególnych formantów.Dane z Orders Tabela będzie dostępna siatki układu wyświetlany w DataGridView kontroli.

Aby ustawić typ listy elementów w oknie źródła danych

  1. Rozwiń węzeł klienci w węźle źródła danych okna.

  2. Zmień kontrolę klienci tabeli do poszczególnych formantów od wybrania poniżej Szczegóły z listy kontroli na klienci węzła.Aby uzyskać więcej informacji, zobacz Porady: ustawianie formantu do utworzenia podczas przeciągania z okna źródła danych.

Tworzenie formularza powiązanym z danymi

Można utworzyć, przeciągając elementy z formantów powiązanych z danymi źródła danych okno do formularza.

Aby utworzyć formantów powiązanych z danymi

  1. Przeciągnij głównym klienci węzła z źródła danych okna na Form1.

    Formanty powiązane dane z opisowe etykiety są widoczne w formularzu, wraz z pasek narzędzi (BindingNavigator) do nawigowania rekordów.Element NorthwindDataSet, CustomersTableAdapter, BindingSource, i BindingNavigator są widoczne na pasku składnika.

  2. Przeciągnij pokrewny zamówienia węzła z źródła danych okna na Form1.

    [!UWAGA]

    Pokrewne zamówienia węzeł znajduje się poniżej faksu kolumny i jest węzeł podrzędny klienci węzła.

    Element DataGridView pasek narzędzi i kontroli (BindingNavigator) do nawigowania między rekordami są widoczne w formularzu.OrdersTableAdapter i BindingSource są widoczne na pasku składnika.

Dodawanie kodu do aktualizowania bazy danych

Baza danych można zaktualizować przez wywołanie metody Update metody klienci i zamówienia TableAdapters.Domyślnie program obsługi zdarzeń dla BindingNavigatorw zapisać zostanie dodany do formularza kod na wysyłanie aktualizacji do bazy danych.Ta procedura modyfikuje kod do wysyłanie aktualizacji w prawidłowej kolejności w celu wyeliminowania możliwości podnoszenia błędów integralności referencyjnej.Kod implementuje także obsługę zawijania wywołanie aktualizacji w bloku catch spróbuj błędów.Można modyfikować kod do potrzeb aplikacji.

[!UWAGA]

Przejrzystość niniejszy przewodnik nie używaj dla transakcji, ale jeśli są aktualizowane co najmniej dwa powiązane tabele, następnie należy zawiera logikę aktualizacji w ramach transakcji.Transakcja jest proces, który zapewnia wszystkie zmiany powiązanego z bazą danych się przed zatwierdzeniem wszystkie zmiany.Aby uzyskać więcej informacji, zobacz Transactions and Concurrency.

Aby dodać logikę aktualizacji do aplikacji

  1. Kliknij dwukrotnie zapisać znajdującego się na BindingNavigator aby otworzyć Edytor kodu w celu bindingNavigatorSaveItem_Click program obsługi zdarzeń.

  2. Zastąp kod w obsługi zdarzeń do wywołania Update metod klasy pokrewne TableAdapters.Poniższy kod najpierw tworzy trzy tabele dane tymczasowe do przechowywania zaktualizowane informacje dla każdego DataRowState (Deleted, Added, i Modified).Następnie aktualizacje są wykonywane w prawidłowej kolejności.Kod powinno wyglądać podobnie do następujących czynności:

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

  2. Niektóre zmiany do danych jednego lub większej liczby rekordów w każdej tabeli.

  3. Naciśnij klawisz zapisać przycisku.

  4. Sprawdź wartości w bazie danych, aby sprawdzić, czy zmiany zostały zapisane.

Następne kroki

W zależności od potrzeb aplikacji istnieje kilka kroków, które można wykonać po utworzeniu formularza powiązanym z danymi w aplikacji systemu Windows.Niektóre udoskonalenia, których można dokonać w tym instruktażu obejmują:

Zobacz też

Koncepcje

Powiązywanie formantów formularzy systemu Windows z danymi w Visual Studio

Przygotowywanie aplikacji na otrzymywanie danych

Pobieranie danych do aplikacji

Powiązywanie kontrolek z danymi w Visual Studio

Edytowanie danych w aplikacji

Sprawdzanie poprawności danych

Zapisywanie danych

Inne zasoby

Wskazówki dotyczące danych

Przegląd aplikacji w Visual Studio

Łączenie z danymi w Visual Studio