Поделиться через


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

запросы LINQ Language-Integrated упрощают доступ к информации в базе данных и позволяют изменять значения в этой базе данных.

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

В примерах в этой статье используется пример базы данных Northwind. Чтобы получить базу данных, см. раздел Загрузка образцов баз данных.

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

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

  2. Щелкните правой кнопкой мыши \подключения к данным\ в \обозревателе серверов\\/\обозревателе баз данных\ и нажмите \Добавить подключение\.

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

Чтобы добавить проект, используя файл LINQ to SQL

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

  2. В меню проекта щелкните Добавить Новый Элемент. Выберите шаблон элемента LINQ to SQL Classes.

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

Чтобы добавлять таблицы для запросов и изменений в конструктор

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

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

См. также