DbDataAdapter.FillSchema 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) |
지정된 DataTable 에 DataSet 을 추가하고 지정된 SchemaType에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다. |
FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) |
지정된 DataTable, 명령 문자열 및 SchemaType 값을 기반으로 지정된 CommandBehavior의 스키마를 구성합니다. |
FillSchema(DataSet, SchemaType, String) |
지정된 DataTable 에 DataSet 을 추가하고 지정된 SchemaType 및 DataTable에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다. |
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
지정된 DataTable 에 DataSet 을 추가하고 지정된 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()
매개 변수
- 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 속성을 구성합니다.
AutoIncrement. 설정 해야 합니다 AutoIncrementStep 고 AutoIncrementSeed 개별적으로 합니다.
FillSchema 또한 구성 합니다 PrimaryKey 고 Constraints 다음 규칙에 따라 속성:
하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.
기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.
기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.
기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.
고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.
를 IDataAdapter 채우는 DataTable동안 중복 열이 발생하면 "columnname 1", "columnname2", "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 문을 처리할 때 OLE DB용 .NET Framework 데이터 공급자에 대한 구현 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
매개 변수
- schemaType
- SchemaType
SchemaType 값 중 하나입니다.
- command
- IDbCommand
데이터 소스에서 행을 검색하는 데 사용할 SQL SELECT 문입니다.
- behavior
- CommandBehavior
CommandBehavior 값 중 하나입니다.
반환
데이터 소스에서 반환된 스키마 정보가 들어 있는 DataTable 개체입니다.
설명
합니다 FillSchema 사용 하 여 데이터 원본에서 스키마를 검색 하는 메서드는 SelectCommand합니다. 와 연결 된 연결 개체는 SelectCommand 유효 해야 하지만 열려 있이 필요는 없습니다. 전에 연결이 닫히면 FillSchema 는 데이터를 검색 하려면을 열고 다음 닫는 하는를 호출 합니다. 연결 하기 전에 열려 있으면 FillSchema 는 호출을 열린 상태로 유지 합니다.
A FillSchema 작업 추가 DataTable 대상 DataSet합니다. 그런 다음, 의 DataTable에 열을 DataColumnCollection 추가하고 데이터 원본에 있는 경우 다음 DataColumn 속성을 구성합니다.
AutoIncrement. 설정 해야 합니다 AutoIncrementStep 고 AutoIncrementSeed 개별적으로 합니다.
FillSchema 또한 구성 합니다 PrimaryKey 고 Constraints 다음 규칙에 따라 속성:
하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.
기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.
기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.
기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.
고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.
를 IDataAdapter 채우는 DataTable동안 중복 열이 발생하면 "columnname 1", "columnname2", "columnname3" 등의 패턴을 사용하여 후속 열의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 각 결과 집합에 DataSet 추가되면 별도의 테이블에 배치됩니다. 추가 결과 집합은 지정된 테이블 이름(예: "Table", "Table1", "Table2" 등)에 정수 값을 추가하여 이름을 지정합니다. 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.
FillSchema 는 행을 반환하지 않습니다. 사용 된 Fill 에 행을 추가 하는 방법을 DataTable입니다.
참고
여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 OLE DB용 .NET Framework 데이터 공급자에 대한 구현 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
지정된 DataTable 에 DataSet 을 추가하고 지정된 SchemaType 및 DataTable에 따라 데이터 원본의 스키마와 일치하도록 스키마를 구성합니다.
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()
매개 변수
- 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 속성을 구성합니다.
AutoIncrement. 설정 해야 합니다 AutoIncrementStep 고 AutoIncrementSeed 개별적으로 합니다.
FillSchema 또한 구성 합니다 PrimaryKey 고 Constraints 다음 규칙에 따라 속성:
하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.
기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.
기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.
기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.
고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.
기본 키 정보는 키 열이 일치하는 행을 찾아서 바꾸는 데 Fill 사용됩니다. 이 동작이 원하는 동작이 아닌 경우 스키마 정보를 요청하지 않고 를 사용합니다 Fill .
를 DbDataAdapter 채우는 DataTable동안 중복 열이 발생하면 "columnname 1", "columnname2", "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 문을 처리할 때 OLE DB용 .NET Framework 데이터 공급자에 대한 구현 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
매개 변수
- 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 속성을 구성합니다.
AutoIncrement. 설정 해야 합니다 AutoIncrementStep 고 AutoIncrementSeed 개별적으로 합니다.
FillSchema 또한 구성 합니다 PrimaryKey 고 Constraints 다음 규칙에 따라 속성:
에 PrimaryKey 대해
DataTable
가 이미 정의되었거나DataTable
에 데이터가 포함된 경우 속성이PrimaryKey
설정되지 않습니다.하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는
DataTable
합니다.기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만
PrimaryKey
속성이 설정 되지 않은 합니다.기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는
DataTable
합니다.
기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다. 이 프로세스에는 서버로의 여러 왕복이 필요할 수 있습니다.
고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.
를 DbDataAdapter 채우는 DataTable동안 중복 열이 발생하면 "columnname 1", "columnname2", "columnname3" 등의 패턴을 사용하여 후속 열의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 각 결과 집합에 DataSet 추가되면 별도의 테이블에 배치됩니다. 추가 결과 집합은 지정된 테이블 이름(예: "Table", "Table1", "Table2" 등)에 정수 값을 추가하여 이름을 지정합니다. 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.
FillSchema 는 행을 반환하지 않습니다. 사용 된 Fill 에 행을 추가 하는 방법을 DataTable입니다.
참고
여러 결과를 반환하는 일괄 처리 SQL 문을 처리할 때 OLE DB용 .NET Framework 데이터 공급자에 대한 구현 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()
매개 변수
- 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 속성을 구성합니다.
AutoIncrement. 설정 해야 합니다 AutoIncrementStep 고 AutoIncrementSeed 개별적으로 합니다.
FillSchema 또한 구성 합니다 PrimaryKey 고 Constraints 다음 규칙에 따라 속성:
하나 이상의 기본 키 열에서 반환 되는 경우는 SelectCommand에 대 한 기본 키 열으로 사용할는 DataTable합니다.
기본 키 열이 반환되지 않지만 고유한 열이 있는 경우 모든 고유 열이 null을 허용하지 않는 경우에만 고유 열이 기본 키로 사용됩니다. 열이 null을 허용 하는 경우는 UniqueConstraint 에 추가 됩니다는 ConstraintCollection, 하지만 PrimaryKey 속성이 설정 되지 않은 합니다.
기본 키 열에 대 한 기본 키 열으로 사용 된 기본 키 열 및 고유 열을 모두 반환 되는 경우는 DataTable합니다.
기본 키와 고유 제약 조건은 이전 규칙에 따라 에 추가 ConstraintCollection 되지만 다른 제약 조건 형식은 추가되지 않습니다.
고유한 클러스터형 SQL Server 테이블에서 열 또는 열에 인덱스가 정의 되 고 클러스터형된 인덱스의 열 이름을 반환 됩니다 primary key 제약 별도 열 집합에 정의 됩니다. 기본 키 열의 이름을 반환할 기본 키 인덱스의 이름을 지정 하는 SELECT 문을 사용 하 여 쿼리 힌트를 사용 합니다. 쿼리 힌트를 지정하는 방법에 대한 자세한 내용은 힌트(Transact-SQL) - 쿼리를 참조하세요.
기본 키 정보는 키 열이 일치하는 행을 찾아서 바꾸는 데 Fill 사용됩니다. 이 동작이 원하는 동작이 아닌 경우 스키마 정보를 요청하지 않고 를 사용합니다 Fill .
를 IDataAdapter 채우는 DataTable동안 중복 열이 발생하면 "columnname 1", "columnname2", "columnname3" 등의 패턴을 사용하여 후속 열의 이름을 생성합니다. 들어오는 데이터에 명명되지 않은 열이 포함된 경우 "Column1", "Column2" 패턴 등에 따라 에 배치 DataSet 됩니다. 여러 결과 집합이 각 결과 집합에 DataSet 추가되면 별도의 테이블에 배치됩니다. 추가 결과 집합은 지정된 테이블 이름(예: "Table", "Table1", "Table2" 등)에 정수 값을 추가하여 이름을 지정합니다. 앱에서 열 및 테이블 이름을 사용하는 경우 이러한 명명 패턴과 충돌이 없는지 확인합니다.
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)를 참조하세요.
추가 정보
적용 대상
.NET