Udostępnij za pośrednictwem


Przewodnik: Manipulowanie danymi (Visual Basic)

Ten przewodnik zawiera podstawowy scenariusz LINQ to SQL umożliwiający dodawanie, modyfikowanie i usuwanie danych w bazie danych. Użyjesz kopii przykładowej bazy danych Northwind, aby dodać klienta, zmienić nazwę klienta i usunąć zamówienie.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Ten przewodnik został napisany przy użyciu programu Visual Basic Development Ustawienia.

Wymagania wstępne

Ten przewodnik wymaga następujących elementów:

  • W tym przewodniku do przechowywania plików jest używany dedykowany folder ("c:\linqtest2"). Przed rozpoczęciem przewodnika utwórz ten folder.

  • Przykładowa bazy danych Northwind.

    Jeśli nie masz tej bazy danych na komputerze dewelopera, możesz pobrać ją z witryny pobierania firmy Microsoft. Aby uzyskać instrukcje, zobacz Pobieranie przykładowych baz danych. Po pobraniu bazy danych skopiuj plik northwnd.mdf do folderu c:\linqtest2.

  • Plik kodu języka Visual Basic wygenerowany z bazy danych Northwind.

    Ten plik można wygenerować przy użyciu Projektant relacyjnych obiektów lub narzędzia SQLMetal. Ten przewodnik został napisany przy użyciu narzędzia SQLMetal z następującym wierszem polecenia:

    sqlmetal /code:"c:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\northwnd.mdf" /pluralize

    Aby uzyskać więcej informacji, zobacz SqlMetal.exe (Narzędzie generowania kodu).

Omówienie

Ten przewodnik składa się z sześciu głównych zadań:

  • Tworzenie rozwiązania LINQ to SQL w programie Visual Studio.

  • Dodawanie pliku kodu bazy danych do projektu.

  • Tworzenie nowego obiektu klienta.

  • Modyfikowanie nazwy kontaktu klienta.

  • Usuwanie zamówienia.

  • Przesyłanie tych zmian do bazy danych Northwind.

Tworzenie rozwiązania LINQ to SQL

W tym pierwszym zadaniu utworzysz rozwiązanie programu Visual Studio zawierające niezbędne odwołania do kompilowania i uruchamiania projektu LINQ to SQL.

Aby utworzyć rozwiązanie LINQ to SQL

  1. W menu Plik programu Visual Studio kliknij pozycję Nowy projekt.

  2. W okienku Typy projektów w oknie dialogowym Nowy projekt kliknij pozycję Visual Basic.

  3. W okienku Szablony kliknij pozycję Aplikacja konsolowa.

  4. W polu Nazwa wpisz LinqDataManipulationApp.

  5. Kliknij przycisk OK.

Dodawanie odwołań i dyrektyw LINQ

W tym przewodniku używane są zestawy, które mogą nie być instalowane domyślnie w projekcie. Jeśli System.Data.Linq nie ma na liście jako odwołanie w projekcie (kliknij pozycję Pokaż wszystkie pliki w Eksplorator rozwiązań i rozwiń węzeł Odwołania), dodaj go zgodnie z opisem w poniższych krokach.

Aby dodać element System.Data.Linq

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij polecenie Dodaj odwołanie.

  2. W oknie dialogowym Dodawanie odwołania kliknij pozycję .NET, kliknij zestaw System.Data.Linq, a następnie kliknij przycisk OK.

    Zestaw jest dodawany do projektu.

  3. W edytorze kodu dodaj następujące dyrektywy powyżej modułu Module1:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    
    

Dodawanie pliku kodu Northwind do projektu

W tych krokach założono, że użyto narzędzia SQLMetal do wygenerowania pliku kodu z przykładowej bazy danych Northwind. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne we wcześniejszej części tego przewodnika.

Aby dodać plik kodu northwind do projektu

  1. W menu Projekt kliknij pozycję Dodaj istniejący element.

  2. W oknie dialogowym Dodawanie istniejącego elementu przejdź do folderu c:\linqtest2\northwind.vb, a następnie kliknij przycisk Dodaj.

    Plik northwind.vb jest dodawany do projektu.

Konfigurowanie Połączenie bazy danych

Najpierw przetestuj połączenie z bazą danych. Należy pamiętać, że nazwa bazy danych Northwnd nie ma znaku i. Jeśli w następnych krokach wygenerujesz błędy, zapoznaj się z plikiem northwind.vb, aby określić, jak jest pisownia częściowej klasy Northwind.

Aby skonfigurować i przetestować połączenie z bazą danych

  1. Wpisz lub wklej następujący kod do Sub Mainpliku :

    ' Use a connection string, but connect to
    '     the temporary copy of the database.
    Dim db As New Northwnd _
        ("C:\linqtest2\northwnd.mdf")
    
    ' Keep the console window open after activity stops.
    Console.ReadLine()
    
  2. Naciśnij klawisz F5, aby przetestować aplikację w tym momencie.

    Zostanie otwarte okno Konsola.

    Zamknij aplikację, naciskając klawisz Enter w oknie Konsola lub klikając pozycję Zatrzymaj debugowanie w menu Debugowanie programu Visual Studio.

Tworzenie nowej jednostki

Tworzenie nowej jednostki jest proste. Obiekty (takie jak Customer) można tworzyć przy użyciu słowa kluczowego New .

W tych i poniższych sekcjach wprowadzasz zmiany tylko w lokalnej pamięci podręcznej. Żadne zmiany nie są wysyłane do bazy danych do momentu wywołania SubmitChanges na końcu tego przewodnika.

Aby dodać nowy obiekt jednostki Klient

  1. Utwórz nowy Customer , dodając następujący kod przed Console.ReadLine w pliku Sub Main:

    ' Create the new Customer object.
    Dim newCust As New Customer()
    newCust.CompanyName = "AdventureWorks Cafe"
    newCust.CustomerID = "A3VCA"
    
    ' Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust)
    
    Console.WriteLine("Customers matching CA before insert:")
    
    Dim custQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In custQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  2. Naciśnij klawisz F5, aby debugować rozwiązanie.

    Wyniki wyświetlane w oknie konsoli są następujące:

    Customers matching CA before insert:

    Customer ID: CACTU

    Customer ID: RICAR

    Zwróć uwagę, że nowy wiersz nie jest wyświetlany w wynikach. Nowe dane nie zostały jeszcze przesłane do bazy danych.

  3. Naciśnij klawisz Enter w oknie Konsola, aby zatrzymać debugowanie.

Aktualizowanie jednostki

W poniższych krokach pobierzesz Customer obiekt i zmodyfikujesz jedną z jego właściwości.

Aby zmienić nazwę klienta

  • Dodaj następujący kod powyżej Console.ReadLine():

    Dim existingCust = _
        (From cust In db.Customers _
         Where cust.CustomerID = "ALFKI" _
         Select cust).First()
    
    ' Change the contact name of the customer.
    existingCust.ContactName = "New Contact"
    

Usuwanie jednostki

Korzystając z tego samego obiektu klienta, można usunąć pierwsze zamówienie.

Poniższy kod pokazuje, jak zerwać relacje między wierszami i jak usunąć wiersz z bazy danych.

Aby usunąć wiersz

  • Dodaj następujący kod tuż powyżej Console.ReadLine():

    ' Access the first element in the Orders collection.
    Dim ord0 As Order = existingCust.Orders(0)
    
    ' Access the first element in the OrderDetails collection.
    Dim detail0 As OrderDetail = ord0.OrderDetails(0)
    
    ' Display the order to be deleted.
    Console.WriteLine _
        (vbCrLf & "The Order Detail to be deleted is: OrderID = " _
        & detail0.OrderID)
    
    ' Mark the Order Detail row for deletion from the database.
    db.OrderDetails.DeleteOnSubmit(detail0)
    

Przesyłanie zmian do bazy danych

Ostatnim krokiem wymaganym do tworzenia, aktualizowania i usuwania obiektów jest rzeczywiste przesłanie zmian do bazy danych. Bez tego kroku zmiany są tylko lokalne i nie będą wyświetlane w wynikach zapytania.

Aby przesłać zmiany do bazy danych

  1. Wstaw następujący kod tuż powyżej Console.ReadLine:

    db.SubmitChanges()
    
  2. Wstaw następujący kod (po SubmitChanges), aby pokazać efekty przed i po przesłaniu zmian:

    Console.WriteLine(vbCrLf & "Customers matching CA after update:")
    Dim finalQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In finalQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  3. Naciśnij klawisz F5, aby debugować rozwiązanie.

    Zostanie wyświetlone okno konsoli w następujący sposób:

    Customers matching CA before update:  
    Customer ID: CACTU  
    Customer ID: RICAR  
    
    The Order Detail to be deleted is: OrderID = 10643  
    
    Customers matching CA after update:  
    Customer ID: A3VCA  
    Customer ID: CACTU  
    Customer ID: RICAR  
    
  4. Naciśnij klawisz Enter w oknie Konsola, aby zatrzymać debugowanie.

Uwaga

Po dodaniu nowego klienta przez przesłanie zmian nie można wykonać tego rozwiązania ponownie, ponieważ nie można ponownie dodać tego samego klienta, co jest. Aby ponownie wykonać rozwiązanie, zmień wartość identyfikatora klienta, który ma zostać dodany.

Zobacz też