DbDataAdapter.FillSchema 메서드

정의

DataTableDataSet을 추가하고 데이터 소스의 스키마와 일치하도록 스키마를 구성합니다.

오버로드

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

지정된 DataTableDataSet 을 추가하고 지정된 SchemaType에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

지정된 DataTable, 명령 문자열 및 SchemaType 값을 기반으로 지정된 CommandBehavior의 스키마를 구성합니다.

FillSchema(DataSet, SchemaType, String)

지정된 DataTableDataSet 을 추가하고 지정된 SchemaTypeDataTable에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.

FillSchema(DataTable, SchemaType)

지정된 DataTable 을 기반으로 하여 지정된 SchemaType의 스키마를 구성합니다.

FillSchema(DataSet, SchemaType)

지정된 DataSet에 "Table"이라는 DataTable을 추가하고 지정된 SchemaType에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

지정된 DataTableDataSet 을 추가하고 지정된 SchemaType에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

매개 변수

dataSet
DataSet

데이터 원본의 스키마로 채울 DataSet입니다.

schemaType
SchemaType

SchemaType 값 중 하나입니다.

command
IDbCommand

데이터 소스에서 행을 검색하는 데 사용할 SQL SELECT 문입니다.

srcTable
String

테이블 매핑에 사용할 원본 테이블의 이름입니다.

behavior
CommandBehavior

CommandBehavior 값 중 하나입니다.

반환

데이터 소스에서 반환된 스키마 정보가 들어 있는 DataTable 개체의 배열입니다.

설명

합니다 FillSchema 사용 하 여 데이터 원본에서 스키마를 검색 하는 메서드는 SelectCommand합니다. 와 연결 된 연결 개체는 SelectCommand 유효 해야 하지만 열려 있이 필요는 없습니다. 전에 연결이 닫히면 FillSchema 는 데이터를 검색 하려면을 열고 다음 닫는 하는를 호출 합니다. 연결 하기 전에 열려 있으면 FillSchema 는 호출을 열린 상태로 유지 합니다.

A FillSchema 작업 추가 DataTable 대상 DataSet합니다. 그런 다음 의 DataTable에 열을 DataColumnCollection 추가하고 데이터 원본에 있는 경우 다음 DataColumn 속성을 구성합니다.

FillSchema 또한 구성 합니다 PrimaryKeyConstraints 다음 규칙에 따라 속성:

  • 하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.

  • 기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.

  • 기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.

기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.

고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.

에서 IDataAdapter 를 채우는 DataTable동안 중복 열이 발견되면 "columnname1", "columnname 2", "columnname3" 등의 패턴을 사용하여 후속 의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 추가 DataSet 되면 각 결과 집합이 별도의 테이블에 배치됩니다. 지정된 테이블 이름에 정수 값을 추가하여 추가 결과 집합의 이름을 지정합니다(예: "Table", "Table1", "Table2" 등). 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.

메서드는 FillSchema 이름이 대/소문자 DataSet 만 다른 여러 DataTable 개체를 포함하는 시나리오를 지원합니다. 이러한 상황에서 FillSchema 는 대/소문자 구분 비교를 수행하여 해당 테이블을 찾고 정확한 일치 항목이 없으면 새 테이블을 만듭니다. 다음 C# 코드는 이 동작을 보여 줍니다.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

가 호출되고 에 DataSet 대/소문자만 다른 이름이 하나 DataTable 만 포함되어 있으면 FillSchema 업데이트 DataTable 됩니다. 이 시나리오에서 비교는 대/소문자를 구분하지 않습니다. 다음 C# 코드는 이 동작을 보여 줍니다.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

FillSchema 는 행을 반환하지 않습니다. 사용 된 Fill 에 행을 추가 하는 방법을 DataTable입니다.

참고

여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 .NET Framework Data Provider for OLE DB에 대한 구현 FillSchema 은 첫 번째 결과에 대해서만 스키마 정보를 검색합니다. 여러 결과에 대한 스키마 정보를 검색하려면 를 로 설정된 AddWithKey와 함께 MissingSchemaAction 사용합니다Fill.

FillSchema를 사용하는 경우 .NET Framework Data Provider for SQL Server는 실행 중인 문에 FOR BROWSE 절을 추가합니다. 사용자는 의도하지 않은 결과, 즉 SET FMTONLY ON 문을 사용하는 데 문제가 발생할 수 있다는 사실을 염두에 두어야 합니다. 자세한 내용은 SET FMTONLY(Transact-SQL)를 참조하세요.

상속자 참고

이 메서드 구현 FillSchema(DataSet, SchemaType) 은 보호되며 .NET Framework 데이터 공급자가 사용하도록 설계되었습니다.

추가 정보

적용 대상

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

지정된 DataTable, 명령 문자열 및 SchemaType 값을 기반으로 지정된 CommandBehavior의 스키마를 구성합니다.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

매개 변수

dataTable
DataTable

데이터 원본의 스키마로 채울 DataTable입니다.

schemaType
SchemaType

SchemaType 값 중 하나입니다.

command
IDbCommand

데이터 소스에서 행을 검색하는 데 사용할 SQL SELECT 문입니다.

behavior
CommandBehavior

CommandBehavior 값 중 하나입니다.

반환

데이터 소스에서 반환된 스키마 정보가 들어 있는 DataTable 개체입니다.

설명

합니다 FillSchema 사용 하 여 데이터 원본에서 스키마를 검색 하는 메서드는 SelectCommand합니다. 와 연결 된 연결 개체는 SelectCommand 유효 해야 하지만 열려 있이 필요는 없습니다. 전에 연결이 닫히면 FillSchema 는 데이터를 검색 하려면을 열고 다음 닫는 하는를 호출 합니다. 연결 하기 전에 열려 있으면 FillSchema 는 호출을 열린 상태로 유지 합니다.

A FillSchema 작업 추가 DataTable 대상 DataSet합니다. 그런 다음 의 DataTable에 열을 DataColumnCollection 추가하고 데이터 원본에 있는 경우 다음 DataColumn 속성을 구성합니다.

FillSchema 또한 구성 합니다 PrimaryKeyConstraints 다음 규칙에 따라 속성:

  • 하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.

  • 기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.

  • 기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.

기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.

고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.

에서 IDataAdapter 를 채우는 DataTable동안 중복 열이 발견되면 "columnname1", "columnname 2", "columnname3" 등의 패턴을 사용하여 후속 의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 추가 DataSet 되면 각 결과 집합이 별도의 테이블에 배치됩니다. 지정된 테이블 이름에 정수 값을 추가하여 추가 결과 집합의 이름을 지정합니다(예: "Table", "Table1", "Table2" 등). 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.

FillSchema 는 행을 반환하지 않습니다. 사용 된 Fill 에 행을 추가 하는 방법을 DataTable입니다.

참고

여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 .NET Framework Data Provider for OLE DB에 대한 구현 FillSchema 은 첫 번째 결과에 대해서만 스키마 정보를 검색합니다. 여러 결과에 대한 스키마 정보를 검색하려면 를 로 설정된 AddWithKey와 함께 MissingSchemaAction 사용합니다Fill.

FillSchema를 사용하는 경우 .NET Framework Data Provider for SQL Server는 실행 중인 문에 FOR BROWSE 절을 추가합니다. 사용자는 의도하지 않은 결과, 즉 SET FMTONLY ON 문을 사용하는 데 문제가 발생할 수 있다는 사실을 염두에 두어야 합니다. 자세한 내용은 SET FMTONLY(Transact-SQL)를 참조하세요.

상속자 참고

이 메서드 구현 FillSchema(DataSet, SchemaType) 은 보호되며 .NET Framework 데이터 공급자가 사용하도록 설계되었습니다.

추가 정보

적용 대상

FillSchema(DataSet, SchemaType, String)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

지정된 DataTableDataSet 을 추가하고 지정된 SchemaTypeDataTable에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

매개 변수

dataSet
DataSet

스키마를 삽입할 DataSet 입니다.

schemaType
SchemaType

스키마를 삽입할 방법을 지정하는 SchemaType 값 중 하나입니다.

srcTable
String

테이블 매핑에 사용할 원본 테이블의 이름입니다.

반환

DataTable 에 추가된 DataSet개체의 컬렉션에 대한 참조입니다.

예외

스키마를 가져올 원본 테이블이 없는 경우

예제

다음 예제에서는 파생 클래스 SqlDataAdapter를 사용하여 를 스키마로 채우고 DataSet 를 반환합니다 DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

설명

이 메서드는 를 사용하여 데이터 원본에서 스키마 정보를 검색합니다 SelectCommand.

A FillSchema 작업 추가 DataTable 대상 DataSet합니다. 그런 다음 의 DataTable에 열을 DataColumnCollection 추가하고 데이터 원본에 있는 경우 다음 DataColumn 속성을 구성합니다.

FillSchema 또한 구성 합니다 PrimaryKeyConstraints 다음 규칙에 따라 속성:

  • 하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.

  • 기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.

  • 기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.

기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.

고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.

기본 키 정보는 키 열이 일치하는 행을 찾아서 바꾸는 데 Fill 사용됩니다. 이 동작이 원하는 동작이 아닌 경우 스키마 정보를 요청하지 않고 를 사용합니다 Fill .

에서 DbDataAdapter 를 채우는 DataTable동안 중복 열이 발견되면 "columnname1", "columnname 2", "columnname3" 등의 패턴을 사용하여 후속 의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 추가 DataSet 되면 각 결과 집합이 별도의 테이블에 배치됩니다. 지정된 테이블 이름에 정수 값을 추가하여 추가 결과 집합의 이름을 지정합니다(예: "Table", "Table1", "Table2" 등). 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.

메서드는 FillSchema 이름이 대/소문자 DataSet 만 다른 여러 DataTable 개체를 포함하는 시나리오를 지원합니다. 이러한 상황에서 FillSchema 는 대/소문자 구분 비교를 수행하여 해당 테이블을 찾고 정확한 일치 항목이 없으면 새 테이블을 만듭니다. 다음 C# 코드는 이 동작을 보여 줍니다.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

가 호출되고 에 DataSet 대/소문자만 다른 이름이 하나 DataTable 만 포함되어 있으면 FillSchema 업데이트 DataTable 됩니다. 이 시나리오에서 비교는 대/소문자를 구분하지 않습니다. 다음 C# 코드는 이 동작을 보여 줍니다.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

select 명령과 연결된 개체는 IDbConnection 유효해야 하지만 열 필요는 없습니다. 가 IDbConnection 호출되기 전에 FillSchema 가 닫혀 있으면 데이터를 검색하기 위해 연 다음 닫힙니다. 가 호출되기 전에 FillSchema 연결이 열려 있으면 열린 상태로 남아 있습니다.

참고

여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 .NET Framework Data Provider for OLE DB에 대한 구현 FillSchema 은 첫 번째 결과에 대해서만 스키마 정보를 검색합니다. 여러 결과에 대한 스키마 정보를 검색하려면 를 로 설정된 AddWithKey와 함께 MissingSchemaAction 사용합니다Fill.

FillSchema를 사용하는 경우 .NET Framework Data Provider for SQL Server는 실행 중인 문에 FOR BROWSE 절을 추가합니다. 사용자는 의도하지 않은 결과, 즉 SET FMTONLY ON 문을 사용하는 데 문제가 발생할 수 있다는 사실을 염두에 두어야 합니다. 자세한 내용은 SET FMTONLY(Transact-SQL)를 참조하세요.

추가 정보

적용 대상

FillSchema(DataTable, SchemaType)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

지정된 DataTable 을 기반으로 하여 지정된 SchemaType의 스키마를 구성합니다.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

매개 변수

dataTable
DataTable

데이터 원본의 스키마로 채울 DataTable입니다.

schemaType
SchemaType

SchemaType 값 중 하나입니다.

반환

데이터 원본에서 반환된 스키마 정보를 포함하는 DataTable 입니다.

예제

다음 예제에서는 파생 클래스 SqlDataAdapter를 사용하여 를 스키마로 채우고 DataSet 를 반환합니다 DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(table, SchemaType.Mapped)
        adapter.Fill(table)
        Return table
    End Using
End Function

설명

합니다 FillSchema 사용 하 여 데이터 원본에서 스키마를 검색 하는 메서드는 SelectCommand합니다. 와 연결 된 연결 개체는 SelectCommand 유효 해야 하지만 열려 있이 필요는 없습니다. 전에 연결이 닫히면 FillSchema 는 데이터를 검색 하려면을 열고 다음 닫는 하는를 호출 합니다. 연결 하기 전에 열려 있으면 FillSchema 는 호출을 열린 상태로 유지 합니다.

FillSchema 작업은 를 반환합니다DataTable. 그런 다음 의 DataTable에 열을 DataColumnCollection 추가하고 데이터 원본에 있는 경우 다음 DataColumn 속성을 구성합니다.

FillSchema 또한 구성 합니다 PrimaryKeyConstraints 다음 규칙에 따라 속성:

  • PrimaryKey 대해 DataTable가 이미 정의되었거나 DataTable 에 데이터가 포함된 경우 속성이 PrimaryKey 설정되지 않습니다.

  • 하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.

  • 기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.

  • 기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.

기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다. 이 프로세스에는 서버로의 여러 왕복이 필요할 수 있습니다.

고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.

에서 DbDataAdapter 를 채우는 DataTable동안 중복 열이 발견되면 "columnname1", "columnname 2", "columnname3" 등의 패턴을 사용하여 후속 의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 추가 DataSet 되면 각 결과 집합이 별도의 테이블에 배치됩니다. 지정된 테이블 이름에 정수 값을 추가하여 추가 결과 집합의 이름을 지정합니다(예: "Table", "Table1", "Table2" 등). 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.

FillSchema 는 행을 반환하지 않습니다. 사용 된 Fill 에 행을 추가 하는 방법을 DataTable입니다.

참고

여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 .NET Framework Data Provider for OLE DB에 대한 구현 FillSchema 은 첫 번째 결과에 대해서만 스키마 정보를 검색합니다. 여러 결과에 대한 스키마 정보를 검색하려면 를 로 설정된 AddWithKey와 함께 MissingSchemaAction 사용합니다Fill.

FillSchema를 사용하는 경우 .NET Framework Data Provider for SQL Server는 실행 중인 문에 FOR BROWSE 절을 추가합니다. 사용자는 의도하지 않은 결과, 즉 SET FMTONLY ON 문을 사용하는 데 문제가 발생할 수 있다는 사실을 염두에 두어야 합니다. 자세한 내용은 SET FMTONLY(Transact-SQL)를 참조하세요.

추가 정보

적용 대상

FillSchema(DataSet, SchemaType)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

지정된 DataSet에 "Table"이라는 DataTable을 추가하고 지정된 SchemaType에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

매개 변수

dataSet
DataSet

스키마를 삽입할 DataSet 입니다.

schemaType
SchemaType

스키마를 삽입할 방법을 지정하는 SchemaType 값 중 하나입니다.

반환

DataTable 에 추가된 DataSet개체의 컬렉션에 대한 참조입니다.

구현

예제

다음 예제에서는 파생 클래스 SqlDataAdapter를 사용하여 를 스키마로 채우고 DataSet 를 반환합니다 DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

설명

이 메서드는 를 사용하여 데이터 원본에서 스키마 정보를 검색합니다 SelectCommand.

A FillSchema 작업 추가 DataTable 대상 DataSet합니다. 그런 다음 의 DataTable에 열을 DataColumnCollection 추가하고 데이터 원본에 있는 경우 다음 DataColumn 속성을 구성합니다.

FillSchema 또한 구성 합니다 PrimaryKeyConstraints 다음 규칙에 따라 속성:

  • 하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.

  • 기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.

  • 기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.

기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.

고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.

기본 키 정보는 키 열이 일치하는 행을 찾아서 바꾸는 데 Fill 사용됩니다. 이 동작이 원하는 동작이 아닌 경우 스키마 정보를 요청하지 않고 를 사용합니다 Fill .

에서 IDataAdapter 를 채우는 DataTable동안 중복 열이 발견되면 "columnname1", "columnname 2", "columnname3" 등의 패턴을 사용하여 후속 의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 추가 DataSet 되면 각 결과 집합이 별도의 테이블에 배치됩니다. 지정된 테이블 이름에 정수 값을 추가하여 추가 결과 집합의 이름을 지정합니다(예: "Table", "Table1", "Table2" 등). 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.

select 명령과 연결된 개체는 IDbConnection 유효해야 하지만 열 필요는 없습니다. 가 IDbConnection 호출되기 전에 FillSchema 가 닫힌 경우 데이터를 검색하기 위해 열리고 닫힙니다. 가 호출되기 전에 FillSchema 연결이 열려 있으면 열려 있습니다.

참고

여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 OLE DB용 .NET Framework 데이터 공급자에 대한 구현 FillSchema 은 첫 번째 결과에 대한 스키마 정보만 검색합니다. 여러 결과에 대한 스키마 정보를 검색하려면 로 설정된 AddWithKeyMissingSchemaAction 함께 를 사용합니다Fill.

FillSchema를 사용하는 경우 .NET Framework Data Provider for SQL Server는 실행 중인 문에 FOR BROWSE 절을 추가합니다. 사용자는 의도하지 않은 결과, 즉 SET FMTONLY ON 문을 사용하는 데 문제가 발생할 수 있다는 사실을 염두에 두어야 합니다. 자세한 내용은 SET FMTONLY(Transact-SQL)를 참조하세요.

추가 정보

적용 대상