Прочитать на английском

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


SqlDataAdapter Класс

Определение

Представляет набор команд данных и подключение к базе данных, которые используются для заполнения DataSet и обновления базы данных SQL Server. Этот класс не наследуется.

public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, ICloneable, System.Data.IDataAdapter, System.Data.IDbDataAdapter
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, ICloneable
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter
Наследование
SqlDataAdapter
Реализации

Примеры

В следующем примере используются SqlCommand, SqlDataAdapterи SqlConnection для выбора записей из базы данных и заполнения выделенными DataSet строками. Затем возвращается заполненное DataSet . Для этого методу передаются инициализированные DataSet, строка подключения и строка запроса, которая является инструкцией Transact-SQL SELECT.

using Microsoft.Data.SqlClient;
using System.Xml;
using System.Data.Common;
using System.Windows.Forms;

public class Form1 : Form
{
    protected DataSet DataSet1;
    protected DataGrid dataGrid1;

    private static DataSet SelectRows(DataSet dataset,
        string connectionString, string queryString)
    {
        using (SqlConnection connection =
            new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(
                queryString, connection);
            adapter.Fill(dataset);
            return dataset;
        }
    }
}

Комментарии

Объект SqlDataAdapterслужит мостом между DataSet и SQL Server для получения и сохранения данных. Обеспечивает SqlDataAdapter этот мост путем сопоставления Fill, который изменяет данные в DataSet , чтобы соответствовать данным в источнике данных, и Update, который изменяет данные в источнике данных в соответствии с данными в DataSet, используя соответствующие инструкции Transact-SQL для источника данных. Обновление выполняется построчно. Для каждой вставленной, измененной и удаленной строки метод определяет тип изменений, Update выполненных в ней (Insert, Updateили Delete). В зависимости от типа изменения Insert, шаблон команды , Updateили Delete выполняется для распространения измененной строки в источник данных. SqlDataAdapter Когда объект заполняет DataSet, он создает необходимые таблицы и столбцы для возвращаемых данных, если они еще не существуют. Однако сведения о первичном ключе не включаются в неявно созданную схему MissingSchemaAction , если свойство не имеет значение AddWithKey. Вы также SqlDataAdapter можете создать схему DataSet, включая сведения о первичном ключе, прежде чем заполнять ее данными с помощью FillSchema. Дополнительные сведения см. в разделе Добавление существующих ограничений в набор данных.

SqlDataAdapterиспользуется в сочетании с SqlConnection и SqlCommand для повышения производительности при подключении к базе данных SQL Server.

Примечание

При использовании хранимых процедур SQL Server для изменения или удаления данных с помощью DataAdapter убедитесь, что в определении хранимой процедуры не указана инструкция SET NOCOUNT ON. В таком случае возвращается число затронутых строк, равное нулю, что DataAdapter интерпретирует как конфликт параллелизма. Это событие вызовет исключение DBConcurrencyException.

Также SqlDataAdapter включает SelectCommandсвойства , InsertCommand, DeleteCommand, UpdateCommandи TableMappings для упрощения загрузки и обновления данных.

При создании экземпляра SqlDataAdapter свойству чтения и записи присваиваются начальные значения. Список этих значений см. в конструкторе SqlDataAdapter.

, InsertCommandDeleteCommandи UpdateCommand — это универсальные шаблоны, которые автоматически заполняются отдельными значениями из каждой измененной строки с помощью механизма параметров.

Для каждого столбца, распространяемого в источник данных в Update, следует добавить параметр в InsertCommand, UpdateCommandили DeleteCommand. Свойству SourceColumnDbParameter объекта должно быть присвоено имя столбца. Этот параметр указывает, что значение параметра не задается вручную, а берется из конкретного столбца в текущей обработанной строке.

Примечание

Будет InvalidOperationException возникать, если Fill вызывается метод и таблица содержит пользовательский тип, недоступный на клиентском компьютере. Дополнительные сведения об определяемых пользователем типах данных CLR см. в разделе Определяемые пользователем типы данных CLR.

Конструкторы

SqlDataAdapter()

Инициализирует новый экземпляр класса SqlDataAdapter.

SqlDataAdapter(SqlCommand)

Инициализирует новый экземпляр класса SqlDataAdapter с помощью указанной команды SqlCommand в качестве свойства SelectCommand.

SqlDataAdapter(String, SqlConnection)

Инициализирует новый экземпляр класса SqlDataAdapter с помощью SelectCommand и объекта SqlConnection.

SqlDataAdapter(String, String)

Инициализирует новый экземпляр класса SqlDataAdapter с помощью SelectCommand и строки подключения.

Свойства

DeleteCommand

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

InsertCommand

Возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для вставки новых записей в источник данных.

SelectCommand

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

UpdateBatchSize

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

UpdateCommand

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

События

RowUpdated

Происходит во время Update(DataSet) после выполнения команды для источника данных. Сделана попытка обновления, поэтому создается событие.

RowUpdating

Происходит во время Update(DataSet) перед выполнением команды в отношении источника данных. Сделана попытка обновления, поэтому создается событие.

Явные реализации интерфейса

ICloneable.Clone()

Описание этого члена см. в разделе Clone().

IDbDataAdapter.DeleteCommand

Описание этого члена см. в разделе DeleteCommand.

IDbDataAdapter.InsertCommand

Описание этого члена см. в разделе InsertCommand.

IDbDataAdapter.SelectCommand

Описание этого члена см. в разделе SelectCommand.

IDbDataAdapter.UpdateCommand

Описание этого члена см. в разделе UpdateCommand.

Применяется к