Практическое руководство. Сохранение данных из объекта в базе данных

 

Опубликовано: Апрель 2016

Можно сохранить данные объектов в базу данных путем передачи значений из объекта в один из методов DBDirect адаптера таблицы (например TableAdapter.Insert). Дополнительные сведения см. в разделе Общие сведения об адаптере таблиц.

Чтобы сохранить данные из коллекции объектов, просмотрите всю коллекцию объектов (например циклом for-next) и отправьте значения каждого объекта в базу данных с помощью одного из методов DBDirect адаптера таблиц.

По умолчанию методы DBDirect создаются для адаптера таблиц, который может работать непосредственно с базой данных. Эти методы можно вызывать напрямую. Для отправки обновлений к базе данных они не требуют объектов DataSet или DataTable для согласования изменений.

Примечание

При настройке адаптера таблиц в главном запросе необходимо указать достаточно сведений для создания методов DBDirect. Например, если адаптер таблиц настроен для таблицы, у которой не определен столбец первичного ключа, он не формирует DBDirect-методов.

Метод DBDirect адаптера таблиц Описание
TableAdapter.Insert Добавляет новые записи в базу данных, позволяя передать отдельные значения столбцов в качестве параметров метода.
TableAdapter.Update Обновляет в базе данных существующие записи. Метод Update принимает исходные и новые значения столбцов в качестве параметров метода. Исходные значения используются для обнаружения исходной записи, а новые значения используются для обновления этой записи.

Метод TableAdapter.Update также используется для согласования изменений в наборе данных с базой данных путем принятия в качестве параметров метода DataSet, DataTable, DataRow или массива DataRow.
TableAdapter.Delete Удаляет существующие записи из базы данных на основе исходных значений столбца, переданных как параметры метода.

Для сохранения новых записей из объекта в базу данных:

  • Создайте записи, передавая значения в метод TableAdapter.Insert.

    В следующем примере создается новая запись клиента в таблице Customers путем передачи значений в объекте currentCustomer методу TableAdapter.Insert.

            private void AddNewCustomers(Customer currentCustomer)
            {
                customersTableAdapter.Insert( 
                    currentCustomer.CustomerID, 
                    currentCustomer.CompanyName, 
                    currentCustomer.ContactName, 
                    currentCustomer.ContactTitle, 
                    currentCustomer.Address, 
                    currentCustomer.City, 
                    currentCustomer.Region, 
                    currentCustomer.PostalCode, 
                    currentCustomer.Country, 
                    currentCustomer.Phone, 
                    currentCustomer.Fax);
            }
    
        Private Sub AddNewCustomer(ByVal currentCustomer As Customer)
    
            CustomersTableAdapter.Insert(
                currentCustomer.CustomerID,
                currentCustomer.CompanyName,
                currentCustomer.ContactName,
                currentCustomer.ContactTitle,
                currentCustomer.Address,
                currentCustomer.City,
                currentCustomer.Region,
                currentCustomer.PostalCode,
                currentCustomer.Country,
                currentCustomer.Phone,
                currentCustomer.Fax)
        End Sub
    

Чтобы обновить существующие записи из объекта в базу данных:

  • Измените записи путем вызова метода TableAdapter.Update и передачи новых значений для обновления записи и исходных значений для поиска записи.

    Примечание

    Объекту необходимо сохранить исходные значения для передачи их методу Update. В этом примере для хранения исходных значений используются свойства с префиксом orig.

    В следующем примере обновляется существующая запись в таблице Customers путем передачи новых и исходных значений в объекте Customer методу TableAdapter.Update.

            private void UpdateCustomer(Customer cust)
            {
                customersTableAdapter.Update(
                    cust.CustomerID,
                    cust.CompanyName,
                    cust.ContactName,
                    cust.ContactTitle,
                    cust.Address,
                    cust.City,
                    cust.Region,
                    cust.PostalCode,
                    cust.Country,
                    cust.Phone,
                    cust.Fax,
                    cust.origCustomerID,
                    cust.origCompanyName,
                    cust.origContactName,
                    cust.origContactTitle,
                    cust.origAddress,
                    cust.origCity,
                    cust.origRegion,
                    cust.origPostalCode,
                    cust.origCountry,
                    cust.origPhone,
                    cust.origFax);
            }
    
        Private Sub UpdateCustomer(ByVal cust As Customer)
    
                CustomersTableAdapter.Update(
                cust.CustomerID,
                cust.CompanyName,
                cust.ContactName,
                cust.ContactTitle,
                cust.Address,
                cust.City,
                cust.Region,
                cust.PostalCode,
                cust.Country,
                cust.Phone,
                cust.Fax,
                cust.origCustomerID,
                cust.origCompanyName,
                cust.origContactName,
                cust.origContactTitle,
                cust.origAddress,
                cust.origCity,
                cust.origRegion,
                cust.origPostalCode,
                cust.origCountry,
                cust.origPhone,
                cust.origFax)
        End Sub
    

Для удаления существующих записей из базы данных:

  • Удалить записи можно, передав исходные значения для поиска записи методу TableAdapter.Delete.

    Примечание

    Объекту необходимо сохранить исходные значения для передачи их методу Delete. В этом примере для хранения исходных значений используются свойства с префиксом orig.

    В следующем примере удаляется запись из таблицы Customers путем передачи исходных значений в объекте Customer в метод TableAdapter.Delete.

            private void DeleteCustomer(Customer cust)
            {
                customersTableAdapter.Delete(
                    cust.origCustomerID,
                    cust.origCompanyName,
                    cust.origContactName,
                    cust.origContactTitle,
                    cust.origAddress,
                    cust.origCity,
                    cust.origRegion,
                    cust.origPostalCode,
                    cust.origCountry,
                    cust.origPhone,
                    cust.origFax);
            }
    
        Private Sub DeleteCustomer(ByVal cust As Customer)
    
            CustomersTableAdapter.Delete(
                cust.origCustomerID,
                cust.origCompanyName,
                cust.origContactName,
                cust.origContactTitle,
                cust.origAddress,
                cust.origCity,
                cust.origRegion,
                cust.origPostalCode,
                cust.origCountry,
                cust.origPhone,
                cust.origFax)
        End Sub
    

Безопасность платформы .NET Framework

Для выполнения инструкций INSERT, UPDATE или DELETE над таблицами в базе данных необходимо иметь разрешения.

См. также

Привязка объектов в Visual Studio
Практическое руководство. Подключение к данным в объектах
Пошаговое руководство. Подключение к данным в объектах (Windows Forms)
Практическое руководство. Непосредственный доступ к базе данных с помощью адаптера таблицы
Привязка элементов управления Windows Forms к данным в Visual Studio
Подключение к данным в Visual Studio
Подготовка приложения к получению данных
Выборка данных в приложение
Привязка элементов управления к данным в Visual Studio
Редактирование данных в приложении
Проверка данных
Сохранение данных