Практическое руководство. Изменение данных в базе данных с помощью LINQ (Visual Basic)
Запросы, интегрированные с языком (LINQ), упрощают доступ к данным базы данных и изменяют значения в базе данных.
В следующем примере показано, как создать новое приложение, которое извлекает и обновляет сведения в базе данных SQL Server.
В примерах в этом разделе используется пример базы данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных".
Создание подключения к базе данных
В Visual Studio откройте сервер Обозреватель Database Обозреватель/, щелкнув меню "Вид", а затем выберите сервер Обозреватель Database Обозреватель./
Щелкните правой кнопкой мыши Подключение данных в Обозреватель Server Обозреватель/ Database и нажмите кнопку "Добавить Подключение".
Укажите допустимое подключение к образцу базы данных Northwind.
Добавление проекта с помощью LINQ to SQL-файла
В меню Файл окна Visual Studio наведите указатель мыши на пункт Создать и щелкните Проект. Выберите приложение Visual Basic Windows Forms в качестве типа проекта.
В меню Проект выберите Добавить новый элемент. Выберите шаблон элемента классов LINQ to SQL.
Назовите файл
northwind.dbml
. Нажмите кнопку Добавить. Для файла открываетсяnorthwind.dbml
реляционный конструктор объектов (конструктор O/R).
Добавление таблиц для запроса и изменения в конструктор
В Обозреватель Server Обозреватель/ Database разверните подключение к базе данных Northwind. Разверните папку Таблицы.
Если вы закрыли конструктор O/R, его можно повторно открыть, дважды щелкнув
northwind.dbml
файл, добавленный ранее.Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора.
Конструктор создает новый объект Customer для проекта.
Сохраните изменения и закройте конструктор.
Сохраните проект.
Добавление кода для изменения базы данных и отображение результатов
На панели элементов перетащите DataGridView элемент управления в форму Windows Form по умолчанию для проекта Form1.
При добавлении таблиц в конструктор 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
Из панели элементов перетащите три Button элемента управления в форму. Выберите первый элемент управления
Button
. В окне свойств задайтеButton
Name
для элемента управленияAddButton
значение иText
значениеAdd
. Нажмите вторую кнопку и задайтеName
для свойстваUpdateButton
значениеUpdate
.Text
. Нажмите третью кнопку и задайтеName
для свойстваDeleteButton
значениеDelete
.Text
.Дважды щелкните кнопку "Добавить", чтобы добавить код в событие
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
Дважды щелкните кнопку "Обновить", чтобы добавить код в событие
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
Дважды щелкните кнопку "Удалить", чтобы добавить код в событие
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
Нажмите клавишу F5 для запуска проекта. Нажмите кнопку "Добавить ", чтобы добавить новую запись. Нажмите кнопку "Обновить", чтобы изменить новую запись. Нажмите кнопку "Удалить" , чтобы удалить новую запись.