다음을 통해 공유


SqlCeCommandBuilder 클래스

연결된 SQL Server Mobile 데이터베이스를 사용하여 DataSet에 수행된 변경을 조정하는 데 사용하는 단일 테이블 명령을 자동으로 생성합니다. 이 클래스는 상속될 수 없습니다.

네임스페이스: 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
public final class SqlCeCommandBuilder extends DbCommandBuilder
public final class SqlCeCommandBuilder extends DbCommandBuilder

설명

SelectCommand 속성을 설정할 경우 단일 테이블 업데이트를 위한 Transact-SQL 문을 자동으로 생성하는 SqlCeCommandBuilder 개체를 만들 수 있습니다.

SqlCeCommandBuilderDataAdapter 속성이 설정될 때마다 자신을 RowUpdating 이벤트의 수신기로 등록합니다. 한 번에 하나의 SqlCeDataAdapterSqlCeCommandBuilder 개체만을 서로 연결할 수 있습니다.

INSERT, UPDATE 또는 DELETE 문을 생성하려면, SqlCeCommandBuilderSelectCommand 속성을 사용하여 필요한 메타데이터 집합을 자동으로 검색합니다. 메타데이터를 검색한 후에, 예를 들어 첫번째 업데이트 후에 SelectCommand를 변경하면 RefreshSchema 메서드를 호출하여 메타데이터를 업데이트해야 합니다.

SelectCommand은 적어도 하나의 기본 키나 특수 열도 반환해야 합니다. 기본 키나 특수 열이 하나도 없으면, InvalidOperation 예외가 생성되며, 명령은 생성되지 않습니다.

또한 SqlCeCommandBuilderSelectCommand에서 참조하는 ConnectionTransaction 속성도 사용합니다. 이러한 속성이 수정되거나 SelectCommand 자체가 바뀌면, 사용자는 RefreshSchema를 호출해야 합니다. 그렇지 않으면 InsertCommand, UpdateCommandDeleteCommand 속성이 이전의 값을 보유합니다.

Dispose를 호출하면, SqlCeCommandBuilderSqlCeDataAdapter에서 분리되고 생성된 명령은 더 이상 사용되지 않습니다.

예제

다음 예제에서는 SqlCeDataAdapterSqlCeConnection과 함께 SqlCeCommand를 사용하여 데이터 소스에서 행을 선택합니다. 이 예제에는 연결 문자열, 쿼리 문자열 및 데이터베이스 테이블 이름인 문자열이 전달됩니다. 그런 다음 예제에서는 SqlCeCommandBuilder를 만듭니다. 그런 다음 데이터 어댑터는 해당 명령 작성기를 사용하여 수정된 DataSet을 로컬 데이터베이스에 업데이트합니다.

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

상속 계층 구조

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

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows CE, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows XP Professional x64 Edition, Windows XP SP2

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

SqlCeCommandBuilder 멤버
System.Data.SqlServerCe 네임스페이스