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

Обновлен: Июль 2008

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

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

В примерах этого раздела используется учебная база данных "Northwind". При отсутствии учебной базы данных "Northwind" на компьютере разработчика ее можно загрузить с веб-узла Центра загрузки Майкрософт. Указания см. в разделе Загрузка образцов баз данных (LINQ to SQL).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. С Панели элементов перетащите элемент управления DataGridView в заданную по умолчанию форму Windows Forms для проекта (Form1).

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

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

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

  4. Дважды щелкните кнопку Add для добавления кода к событию 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. Дважды щелкните кнопку Update для добавления кода к событию 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"
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  6. Дважды щелкните кнопку Delete для добавления кода к событию 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 для запуска проекта. Нажмите кнопку Add для добавления новой записи. Нажмите кнопку Update для изменения новой записи. Нажмите кнопку Delete для удаления новой записи.

См. также

Задачи

Как назначить хранимые процедуры для выполнения обновлений, вставок и удалений (реляционный конструктор объектов)

Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)

Основные понятия

Методы DataContext (реляционный конструктор объектов)

Другие ресурсы

LINQ в Visual Basic

Запросы (Visual Basic)

LINQ to SQL

Журнал изменений

Дата

Журнал изменений

Причина

Июль 2008

Устранены ошибки в примерах кода на шаге 4 и на шаге 6.

Обратная связь от клиента.