Практическое руководство. Изменение данных в базе данных с помощью LINQ (Visual Basic)

Запросы, интегрированные с языком (LINQ), упрощают доступ к данным базы данных и изменяют значения в базе данных.

В следующем примере показано, как создать новое приложение, которое извлекает и обновляет сведения в базе данных SQL Server.

В примерах в этом разделе используется пример базы данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных".

Создание подключения к базе данных

  1. В Visual Studio откройте сервер Обозреватель Database Обозреватель/, щелкнув меню "Вид", а затем выберите сервер Обозреватель Database Обозреватель./

  2. Щелкните правой кнопкой мыши Подключение данных в Обозреватель Server Обозреватель/ Database и нажмите кнопку "Добавить Подключение".

  3. Укажите допустимое подключение к образцу базы данных Northwind.

Добавление проекта с помощью LINQ to SQL-файла

  1. В меню Файл окна Visual Studio наведите указатель мыши на пункт Создать и щелкните Проект. Выберите приложение Visual Basic Windows Forms в качестве типа проекта.

  2. В меню Проект выберите Добавить новый элемент. Выберите шаблон элемента классов LINQ to SQL.

  3. Назовите файл northwind.dbml. Нажмите кнопку Добавить. Для файла открывается northwind.dbml реляционный конструктор объектов (конструктор O/R).

Добавление таблиц для запроса и изменения в конструктор

  1. В Обозреватель Server Обозреватель/ Database разверните подключение к базе данных Northwind. Разверните папку Таблицы.

    Если вы закрыли конструктор O/R, его можно повторно открыть, дважды щелкнув northwind.dbml файл, добавленный ранее.

  2. Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора.

    Конструктор создает новый объект Customer для проекта.

  3. Сохраните изменения и закройте конструктор.

  4. Сохраните проект.

Добавление кода для изменения базы данных и отображение результатов

  1. На панели элементов перетащите DataGridView элемент управления в форму Windows Form по умолчанию для проекта Form1.

  2. При добавлении таблиц в конструктор O/R конструктор конструктора в проект добавлен DataContext объект. Этот объект содержит код, который можно использовать для доступа к таблице Customers. Он также содержит код, определяющий локальный объект Customer и коллекцию Customers для таблицы. Объект DataContext проекта называется на основе имени DBML-файла. Для этого проекта DataContext объект называется northwindDataContext.

    Вы можете создать экземпляр DataContext объекта в коде и запросе и изменить коллекцию Customers, указанную конструктором O/R. Изменения, внесенные в коллекцию Customers, не отражаются в базе данных, пока не будете отправлять их, вызывая SubmitChanges метод DataContext объекта.

    Дважды щелкните Windows Form, Form1, чтобы добавить код в Load событие, чтобы запросить таблицу Customers, которая предоставляется в качестве свойства.DataContext Добавьте следующий код:

    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. Из панели элементов перетащите три Button элемента управления в форму. Выберите первый элемент управления Button. В окне свойств задайте ButtonName для элемента управления AddButton значение и Text значение Add. Нажмите вторую кнопку и задайте Name для свойства UpdateButton значение Update.Text. Нажмите третью кнопку и задайте Name для свойства DeleteButton значение Delete.Text.

  4. Дважды щелкните кнопку "Добавить", чтобы добавить код в событиеClick. Добавьте следующий код:

    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. Дважды щелкните кнопку "Обновить", чтобы добавить код в событиеClick. Добавьте следующий код:

    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. Дважды щелкните кнопку "Удалить", чтобы добавить код в событиеClick. Добавьте следующий код:

    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. Нажмите клавишу F5 для запуска проекта. Нажмите кнопку "Добавить ", чтобы добавить новую запись. Нажмите кнопку "Обновить", чтобы изменить новую запись. Нажмите кнопку "Удалить" , чтобы удалить новую запись.

См. также