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

Обновлен: Ноябрь 2007

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

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

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

ms233816.alert_note(ru-ru,VS.90).gifПримечание.

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

Метод DBDirect адаптера таблиц

Описание

TableAdapter.Insert

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

TableAdapter.Update

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

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

TableAdapter.Delete

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

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

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

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

    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
    
    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);
    }
    

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

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

    ms233816.alert_note(ru-ru,VS.90).gifПримечание.

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

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

    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
    
    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);
    }
    

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

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

    ms233816.alert_note(ru-ru,VS.90).gifПримечание.

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

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

    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
    
    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);
    }
    

Безопасность

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

См. также

Задачи

Практическое руководство. Подключение к данным в объекте

Пошаговое руководство. Подключение к данным в объектах

Практическое руководство. Непосредственный доступ к базе данных с помощью адаптера таблицы

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

Привязка объектов в Visual Studio

Общие сведения об отображении данных

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

Подключение к данным в Visual Studio

Подготовка приложения к получению данных

Выборка данных в приложение

Отображение данных на форме в приложениях Windows

Редактирование данных в приложении

Проверка данных

Сохранение данных