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


Класс SqlCeCommandBuilder

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

Иерархия наследования

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Data.Common.DbCommandBuilder
        System.Data.SqlServerCe.SqlCeCommandBuilder

Пространство имен:  System.Data.SqlServerCe
Сборка:  System.Data.SqlServerCe (в System.Data.SqlServerCe.dll)

Синтаксис

'Декларация
Public NotInheritable Class SqlCeCommandBuilder _
    Inherits DbCommandBuilder
'Применение
Dim instance As SqlCeCommandBuilder
public sealed class SqlCeCommandBuilder : DbCommandBuilder
public ref class SqlCeCommandBuilder sealed : public DbCommandBuilder
[<SealedAttribute>]
type SqlCeCommandBuilder =  
    class
        inherit DbCommandBuilder
    end
public final class SqlCeCommandBuilder extends DbCommandBuilder

Тип SqlCeCommandBuilder обеспечивает доступ к следующим элементам.

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

  Имя Описание
Открытый метод SqlCeCommandBuilder() Инициализация нового экземпляра класса SqlCeCommandBuilder.
Открытый метод SqlCeCommandBuilder(SqlCeDataAdapter) Инициализирует новый экземпляр класса SqlCeCommandBuilder со связанными объектами SqlCeDataAdapter и SqlCeCommand.

В начало

Свойства

  Имя Описание
Защищенное свойство CanRaiseEvents (унаследовано из Component)
Открытое свойство CatalogLocation Не поддерживается в SQL Server Compact. (Переопределяет DbCommandBuilder.CatalogLocation.)
Открытое свойство CatalogSeparator Не поддерживается в SQL Server Compact. (Переопределяет DbCommandBuilder.CatalogSeparator.)
Открытое свойство ConflictOption Указывает режим ConflictOption, используемый для объекта SqlCeCommandBuilder. (Переопределяет DbCommandBuilder.ConflictOption.)
Открытое свойство Container (унаследовано из Component)
Открытое свойство DataAdapter Возвращает или задает свойство объекта SqlCeDataAdapter, для которого автоматически сформированы инструкции SQL.
Защищенное свойство DesignMode (унаследовано из Component)
Защищенное свойство Events (унаследовано из Component)
Открытое свойство QuotePrefix Возвращает или задает начальный символ или символы, используемые при указании объектов базы данных SQL Server (например таблиц или столбцов), имена которых содержат символы пробелов или зарезервированные ключевые слова. (Переопределяет DbCommandBuilder.QuotePrefix.)
Открытое свойство QuoteSuffix Возвращает или задает завершающий символ или символы, используемые при указании объектов базы данных SQL Server (например таблиц или столбцов), имена которых содержат символы пробелов или зарезервированные ключевые слова. (Переопределяет DbCommandBuilder.QuoteSuffix.)
Открытое свойство SchemaSeparator Не поддерживается в SQL Server Compact. (Переопределяет DbCommandBuilder.SchemaSeparator.)
Открытое свойство SetAllValues (унаследовано из DbCommandBuilder)
Открытое свойство Site (унаследовано из Component)

В начало

Методы

  Имя Описание
Защищенный метод ApplyParameterInfo (унаследовано из DbCommandBuilder)
Открытый метод CreateObjRef (унаследовано из MarshalByRefObject)
Открытый метод Dispose() (унаследовано из Component)
Защищенный метод Dispose(Boolean) (унаследовано из DbCommandBuilder)
Открытый метод Equals (унаследовано из Object)
Защищенный метод Finalize (унаследовано из Component)
Открытый метод GetDeleteCommand() Возвращает автоматически сформированный объект SqlCeCommand, необходимый для выполнения операций удаления в базе данных при вызове приложением метода Update объекта SqlCeDataAdapter.
Открытый метод GetDeleteCommand(Boolean) (унаследовано из DbCommandBuilder)
Открытый метод GetHashCode (унаследовано из Object)
Открытый метод GetInsertCommand() Возвращает автоматически созданный объект SqlCeCommand, необходимый для выполнения операций вставки в базе данных при вызове приложением метода Update объекта SqlCeDataAdapter.
Открытый метод GetInsertCommand(Boolean) (унаследовано из DbCommandBuilder)
Открытый метод GetLifetimeService (унаследовано из MarshalByRefObject)
Защищенный метод GetParameterName(Int32) (унаследовано из DbCommandBuilder)
Защищенный метод GetParameterName(String) (унаследовано из DbCommandBuilder)
Защищенный метод GetParameterPlaceholder (унаследовано из DbCommandBuilder)
Защищенный метод GetSchemaTable (унаследовано из DbCommandBuilder)
Защищенный метод GetService (унаследовано из Component)
Открытый метод GetType (унаследовано из Object)
Открытый метод GetUpdateCommand() Возвращает автоматически созданный объект SqlCeCommand, необходимый для выполнения операций вставки в базе данных при вызове приложением метода Update объекта SqlCeDataAdapter.
Открытый метод GetUpdateCommand(Boolean) (унаследовано из DbCommandBuilder)
Защищенный метод InitializeCommand (унаследовано из DbCommandBuilder)
Открытый метод InitializeLifetimeService (унаследовано из MarshalByRefObject)
Защищенный метод MemberwiseClone() (унаследовано из Object)
Защищенный метод MemberwiseClone(Boolean) (унаследовано из MarshalByRefObject)
Открытый метод QuoteIdentifier Возвращает правильную форму указанного идентификатора в кавычках. (Переопределяет DbCommandBuilder.QuoteIdentifier(String).)
Открытый метод RefreshSchema (унаследовано из DbCommandBuilder)
Защищенный метод RowUpdatingHandler (унаследовано из DbCommandBuilder)
Защищенный метод SetRowUpdatingHandler (унаследовано из DbCommandBuilder)
Открытый метод ToString (унаследовано из Component)
Открытый метод UnquoteIdentifier Возвращает правильную форму указанного идентификатора без кавычек. (Переопределяет DbCommandBuilder.UnquoteIdentifier(String).)

В начало

События

  Имя Описание
Открытое событие Disposed (унаследовано из Component)

В начало

Замечания

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

Объект SqlCeCommandBuilder сам регистрирует себя в качестве прослушивателя для событий RowUpdating каждый раз после установки свойства DataAdapter. Одновременно друг с другом могут быть связаны только по одному объекту SqlCeDataAdapter и SqlCeCommandBuilder.

При формировании инструкций INSERT, UPDATE и DELETE через SqlCeCommandBuilder для автоматической выборки требуемого набора метаданных применяется свойство SelectCommand. Если значение свойства SelectCommand после выборки метаданных изменено (например, после первого обновления), то необходимо обновить метаданные вызовом метода RefreshSchema().

Свойство SelectCommand должно также возвратить, по крайней мере, один столбец первичного ключа или столбец с атрибутом UNIQUE. Если оба объекта отсутствуют, то создается исключение InvalidOperation и команды не формируются.

Объект SqlCeCommandBuilder содержит также свойства Connection и Transaction, на которые ссылается SelectCommand. Если происходит изменение любого из этих свойств или замена самого SelectCommand, то необходимо вызвать функцию RefreshSchema(). В противном случае свойства InsertCommand, UpdateCommand и DeleteCommand сохранят свои предыдущие значения.

При вызове метода Dispose() происходит разрыв связи между SqlCeCommandBuilder и SqlCeDataAdapter, а использование сформированных команд прекращается.

Примеры

В следующем примере показано использование SqlCeCommand, SqlCeDataAdapter и SqlCeConnection для выборки строк из источника данных. В этом примере передается строка подключения, строка запроса и строка, которая представляет собой имя таблицы базы данных. Затем пример создает объект SqlCeCommandBuilder, который используется адаптером обработки данных для обновления измененного набора данных в локальной базе данных.

Try
    Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf")
    conn.Open()

    Dim cmd As SqlCeCommand = conn.CreateCommand()
    cmd.CommandText = "SELECT * FROM employees"

    Dim adp As New SqlCeDataAdapter(cmd)

    Dim cb As New SqlCeCommandBuilder()
    cb.DataAdapter = adp

    MessageBox.Show(cb.GetUpdateCommand().CommandText)
    MessageBox.Show(cb.GetInsertCommand().CommandText)
    MessageBox.Show(cb.GetDeleteCommand().CommandText)

    Dim ds As New DataSet("test")
    adp.Fill(ds)

    ' Modify the contents of the DataSet
    '
    ds.Tables(0).Rows(0)("First Name") = "Joe"

    adp.Update(ds)

Catch e1 As Exception
    Console.WriteLine(e1.ToString())
End Try
try
{
    SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf");
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM employees";

    SqlCeDataAdapter adp = new SqlCeDataAdapter(cmd);

    SqlCeCommandBuilder cb = new SqlCeCommandBuilder();
    cb.DataAdapter = adp;

    MessageBox.Show(cb.GetUpdateCommand().CommandText);
    MessageBox.Show(cb.GetInsertCommand().CommandText);
    MessageBox.Show(cb.GetDeleteCommand().CommandText);

    DataSet ds = new DataSet("test");
    adp.Fill(ds);

    // Modify the contents of the DataSet
    //
    ds.Tables[0].Rows[0]["First Name"] = "Joe";

    adp.Update(ds);

}
catch (Exception e1)
{
    Console.WriteLine(e1.ToString());
}

Безопасность многопоточности

Все общие статические члены (Shared в Microsoft Visual Basic) этого типа можно использовать в потокобезопасных операциях. Потокобезопасная работа с членами экземпляров типа не гарантируется.

См. также

Справочник

Пространство имен System.Data.SqlServerCe