Udostępnij za pośrednictwem


Porady: modyfikowanie danych w bazie danych przy użyciu LINQ (Visual Basic)

Language-Integrated Zapytania (LINQ) ułatwiają dostęp do informacji o bazie danych i modyfikowanie wartości w bazie danych.

W poniższym przykładzie pokazano, jak utworzyć nową aplikację, która pobiera i aktualizuje informacje w bazie danych programu SQL Server.

Przykłady w tym artykule korzystają z przykładowej bazy danych Northwind. Aby uzyskać bazę danych, zobacz Pobieranie przykładowych baz danych.

Aby utworzyć połączenie z bazą danych

  1. W programie Visual Studio otwórz Eksplorator serwera/Eksplorator baz danych, klikając menu Widok , a następnie wybierz pozycję Eksploratora serwera/Eksploratora baz danych.

  2. Kliknij prawym przyciskiem myszy połączenia danych w Eksploratorze Server Explorer/Database Explorer, a następnie kliknij przycisk Dodaj połączenie.

  3. Określ prawidłowe połączenie z przykładową bazą danych Northwind.

Aby dodać projekt z plikiem LINQ to SQL

  1. W programie Visual Studio w menu Plik wskaż polecenie Nowy, a następnie kliknij pozycję Projekt. Wybierz pozycję Visual Basic Aplikacja Windows Forms jako typ projektu.

  2. W menu projektu kliknij pozycję Dodaj nowy element. Wybierz szablon elementu klasy LINQ to SQL.

  3. Nadaj plikowi nazwę northwind.dbml. Kliknij pozycję Dodaj. Projektant relacyjny obiektu (O/R Designer) jest otwarty dla pliku northwind.dbml.

Aby dodać tabele do zapytania i zmodyfikować go w projektancie

  1. W Eksploratorze serwera /Eksplorator baz danychrozwiń połączenie z bazą danych Northwind. Rozwiń folder Tables.

    Jeśli program O/R Designer został zamknięty, możesz go ponownie otworzyć, klikając dwukrotnie dodany wcześniej plik northwind.dbml.

  2. Kliknij tabelę Customers (Klienci) i przeciągnij ją do lewego okienka projektanta.

    Projektant tworzy nowy obiekt Customer dla projektu.

  3. Zapisz zmiany i zamknij edytora.

  4. Zapisz projekt.

Aby dodać kod, aby zmodyfikować bazę danych i wyświetlić wyniki

  1. Z przybornika przeciągnij kontrolkę DataGridView na domyślny formularz Windows dla twojego projektu, Form1.

  2. Po dodaniu tabel do narzędzia projektowego O/R, projektant O/R dodał do projektu obiekt DataContext. Ten obiekt zawiera kod, którego można użyć do uzyskiwania dostępu do tabeli Customers. Zawiera również kod, który definiuje lokalny obiekt Customer i kolekcję Customers dla tabeli. Obiekt DataContext dla projektu jest nazwany na podstawie nazwy pliku dbml. W tym projekcie obiekt DataContext ma nazwę northwindDataContext.

    Możesz utworzyć wystąpienie obiektu DataContext w kodzie i wykonać zapytanie oraz zmodyfikować kolekcję Customers określoną przez projektanta O/R. Zmiany wprowadzone w kolekcji Customers nie zostaną odzwierciedlone w bazie danych do momentu ich przesłania przez wywołanie metody SubmitChanges obiektu DataContext.

    Kliknij dwukrotnie Formularz Windows, Form1, w celu dodania kodu do zdarzenia Load, aby wysłać zapytanie do tabeli "Customers", która jest udostępniona jako właściwość DataContext. Dodaj następujący kod:

    Private db As northwindDataContext
    
    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs
                          ) Handles MyBase.Load
      db = New northwindDataContext()
    
      RefreshData()
    End Sub
    
    Private Sub RefreshData()
      Dim customers = From cust In db.Customers
                      Where cust.City(0) = "W"
                      Select cust
    
      DataGridView1.DataSource = customers
    End Sub
    
  3. Z przybornika , przeciągnij trzy kontrolki Button na formularz. Wybierz pierwszą kontrolkę Button. W oknie właściwości ustaw Name kontrolki Button na AddButton, a Text na wartość Add. Wybierz drugi przycisk i ustaw właściwość Name na wartość UpdateButton, a właściwość Text na wartość Update. Wybierz trzeci przycisk i ustaw właściwość Name na DeleteButton i właściwość Text na wartość Delete.

  4. Kliknij dwukrotnie przycisk Dodaj, aby dodać kod do zdarzenia Click. Dodaj następujący kod:

    Private Sub AddButton_Click(ByVal sender As System.Object,
                                ByVal e As System.EventArgs
                               ) Handles AddButton.Click
      Dim cust As New Customer With {
        .City = "Wellington",
        .CompanyName = "Blue Yonder Airlines",
        .ContactName = "Jill Frank",
        .Country = "New Zealand",
        .CustomerID = "JILLF"}
    
      db.Customers.InsertOnSubmit(cust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  5. Dwukrotnie kliknij przycisk Update, aby dodać kod do zdarzenia Click. Dodaj następujący kod:

    Private Sub UpdateButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs
                                  ) Handles UpdateButton.Click
      Dim updateCust = (From cust In db.Customers
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      updateCust.ContactName = "Jill Shrader"
      updateCust.Country = "Wales"
      updateCust.CompanyName = "Red Yonder Airlines"
      updateCust.City = "Cardiff"
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  6. Kliknij dwukrotnie przycisk Usuń, aby dodać kod do zdarzenia Click. Dodaj następujący kod:

    Private Sub DeleteButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs
                                  ) Handles DeleteButton.Click
      Dim deleteCust = (From cust In db.Customers
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      db.Customers.DeleteOnSubmit(deleteCust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  7. Naciśnij F5, aby uruchomić projekt. Kliknij Dodaj, aby dodać nowy rekord. Kliknij Aktualizuj, aby zmodyfikować nowy rekord. Kliknij Usuń, aby usunąć nowy rekord.

Zobacz też