DbDataAdapter.Fill 메서드

정의

DataSet 또는 DataTable을 채웁니다.Fills a DataSet or a DataTable.

오버로드

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

DataSet과 소스 테이블 이름, 명령 문자열과 명령 동작을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataSet의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

DataSetDataSet 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet, String, IDataReader, Int32, Int32)

DataSet, DataTableIDataReader 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataSet의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet, DataTable, and IDataReader names.

Fill(DataSet, Int32, Int32, String)

DataSetDataSet 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(Int32, Int32, DataTable[])

지정된 레코드에서 시작하여 지정된 최대 레코드 수까지 검색하면서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

Fill(DataTable)

DataSet 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

Fill(DataTable, IDataReader)

지정된 DataTableIDataReader 이름을 사용하여 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

Fill(DataSet, String)

DataSetDataSet 이름을 사용하여 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet)

DataSet의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in the DataSet.

Fill(DataTable, IDbCommand, CommandBehavior)

지정된 DataTable, DataTableIDbCommand를 사용하여 데이터 소스의 행과 일치하도록 CommandBehavior의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

DataSet과 소스 테이블 이름, 명령 문자열과 명령 동작을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataSet의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String, command As IDbCommand, behavior As CommandBehavior) As Integer

매개 변수

dataSet
DataSet

레코드와 스키마(필요한 경우)로 채울 DataSet입니다.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

0부터 시작되는 시작 레코드 번호입니다.The zero-based record number to start with.

maxRecords
Int32

검색할 수 있는 최대 레코드 수입니다.The maximum number of records to retrieve.

srcTable
String

테이블 매핑에 사용할 원본 테이블의 이름입니다.The name of the source table to use for table mapping.

command
IDbCommand

데이터 소스에서 행을 검색하는 데 사용할 SQL SELECT 문입니다.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

CommandBehavior 값 중 하나입니다.One of the CommandBehavior values.

반환

Int32

DataSet에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataSet. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

예외

소스 테이블이 잘못된 경우The source table is invalid.

startRecord 매개 변수가 0보다 작은 경우The startRecord parameter is less than 0.

또는-or- maxRecords 매개 변수가 0보다 작은 경우The maxRecords parameter is less than 0.

설명

Fill메서드는 연결 된 속성에 지정 된 SELECT 문을 사용 하 여 데이터 원본에서 행을 검색 합니다 SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. SELECT 문과 사용 하 여 연결 된 연결 개체는 유효 해야 합니다. 하지만 열려 있이 필요가 없습니다.The connection object associated with the SELECT statement must be valid, but it does not need to be open. 전에 연결이 닫히면 Fill 는 데이터를 검색 하려면을 열고 다음 닫는 하는를 호출 합니다.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

Fill 작업이 대상에 행 추가 DataTable 개체를 DataSet만들기는 DataTable 경우 이미 없는 개체입니다.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. DataTable개체를 만들 때 Fill 일반적으로 작업은 열 이름 메타 데이터만 만듭니다.When creating DataTable objects, the Fill operation normally creates only column name metadata. 그러나 경우 합니다 MissingSchemaAction 속성이 AddWithKey, 적절 한 기본 키와 제약 조건도 만들어집니다.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

DbDataAdapter가를 채우는 동안 중복 된 열을 발견 하는 경우 DataTable "columnname 1", "columnname 2", "columnname 3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 각 결과 집합에 여러 결과 집합이 추가 되 면 DataSet 별도의 테이블에 배치 됩니다.When multiple result sets are added to the DataSet each result set is placed in a separate table. 추가 결과 집합이 지정한 테이블 이름 (예: "Table", "Table1", "Table2" 및 등)에 정수 값을 추가 하 여 이름이 지정 됩니다.Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). 열 및 테이블 이름을 사용 하 여 애플리케이션은 이러한 명명 패턴을 사용 하 여 충돌 하지 않도록 확인 해야 합니다.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Fill메서드는의 DataSet DataTable 이름과 대/소문자만 다른 여러 개체가 포함 된 시나리오를 지원 합니다.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. 이러한 경우는 Fill 대/소문자를 구분 하는 비교를 수행 하 여 해당 테이블을 찾고 정확히 일치 하는 항목이 없는 경우 새 테이블을 만듭니다.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

Fill가 호출 되 고에 DataSet DataTable 대/소문자만 다른 이름이 있는 하나만 포함 되어 있으면이 DataTable 업데이트 됩니다.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. 이 시나리오에서 비교는 대/소문자를 구분 하지 않습니다.In this scenario, the comparison is case insensitive. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

사용할 수는 Fill 메서드를 여러 번에 동일한 DataTable입니다.You can use the Fill method multiple times on the same DataTable. 기본 키가 있는 경우 들어오는 행이 이미 존재 하는 일치 하는 행과 병합 됩니다.If a primary key exists, incoming rows are merged with matching rows that already exist. 들어오는 행에 추가 된 기본 키가 없으면는 DataTable합니다.If no primary key exists, incoming rows are appended to the DataTable.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

참고

구현의 여러 결과 반환 하는 SQL 문을 일괄 처리할 때 FillFillSchema .NET Framework 데이터 공급자는 결과 대해서만 첫 번째 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

상속자 참고

이 메서드의 오버 로드 Fill(DataSet) 는 보호 되며 .NET Framework 데이터 공급자에서 사용 하도록 설계 되었습니다.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

적용 대상

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

DataSetDataSet 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

protected:
 virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer

매개 변수

dataTables
DataTable[]

데이터 소스에서 채울 DataTable 개체입니다.The DataTable objects to fill from the data source.

startRecord
Int32

0부터 시작되는 시작 레코드 번호입니다.The zero-based record number to start with.

maxRecords
Int32

검색할 수 있는 최대 레코드 수입니다.The maximum number of records to retrieve.

command
IDbCommand

IDbCommand 개체를 채우기 위해 실행되는 DataTable입니다.The IDbCommand executed to fill the DataTable objects.

behavior
CommandBehavior

CommandBehavior 값 중 하나입니다.One of the CommandBehavior values.

반환

Int32

데이터 테이블에서 추가되거나 새로 고쳐진 행의 수입니다.The number of rows added to or refreshed in the data tables.

예외

DataSet가 잘못되었습니다.The DataSet is invalid.

소스 테이블이 잘못된 경우The source table is invalid.

또는-or-

연결이 잘못된 경우The connection is invalid.

연결을 찾을 수 없는 경우The connection could not be found.

startRecord 매개 변수가 0보다 작은 경우The startRecord parameter is less than 0.

또는-or- maxRecords 매개 변수가 0보다 작은 경우The maxRecords parameter is less than 0.

설명

maxRecords값이 0 이면 시작 레코드 이후 발견 된 모든 레코드를 가져옵니다.A maxRecords value of 0 gets all records found after the start record. maxRecords가 나머지 행 수보다 크면 나머지 행만 반환 되 고 오류는 발생 하지 않습니다.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned and no error is issued.

Fill메서드는 SELECT 문을 사용 하 여 데이터 소스에서 데이터를 검색 합니다.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionSELECT 문과 연결 된 개체는 유효 해야 하지만 열 필요는 없습니다.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. IDbConnection가 호출 되기 전에가 닫혀 있으면 Fill 데이터를 검색 한 다음 닫힌 것으로 열립니다.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

명령에서 행을 반환 하지 않는 경우에는 테이블이 추가 되지 DataSet 않지만 예외가 발생 하지는 않습니다.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

DbDataAdapter를 채우는 동안 개체가 중복 된 열을 발견 하는 경우 DataTable "columnname 1", "columnname 2", "columnname 3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

지정 된 쿼리가 여러 결과를 반환 하는 경우 각 결과 집합은 별도의 테이블에 배치 됩니다.When the query specified returns multiple results, each result set is placed in a separate table. 추가 결과 집합이 지정한 테이블 이름 (예: "Table", "Table1", "Table2" 및 등)에 정수 값을 추가 하 여 이름이 지정 됩니다.Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). 행을 반환 하지 않는 쿼리에 대해서는 테이블이 생성 되지 않으므로 insert 쿼리를 처리 한 후 select 쿼리를 수행 하는 경우 select 쿼리에 대해 생성 된 테이블은 첫 번째 테이블 이기 때문에 "Table"로 이름이 지정 됩니다.Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. 열 및 테이블 이름을 사용 하 여 애플리케이션은 이러한 명명 패턴을 사용 하 여 충돌 하지 않도록 확인 해야 합니다.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Fill메서드는의 DataSet DataTable 이름과 대/소문자만 다른 여러 개체가 포함 된 시나리오를 지원 합니다.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. 이러한 경우는 Fill 대/소문자를 구분 하는 비교를 수행 하 여 해당 테이블을 찾고 정확히 일치 하는 항목이 없는 경우 새 테이블을 만듭니다.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

Fill가 호출 되 고에 DataSet DataTable 대/소문자만 다른 이름이 있는 하나만 포함 되어 있으면이 DataTable 업데이트 됩니다.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. 이 시나리오에서 비교는 대/소문자를 구분 하지 않습니다.In this scenario, the comparison is case insensitive. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

데이터 테이블을 채우는 동안 오류가 발생 하거나 예외가 발생 한 경우 오류가 발생 하기 전에 추가 된 행이 데이터 테이블에 남아 있습니다.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 나머지 작업은 중단 됩니다.The remainder of the operation is aborted.

개체를 채우는 데 사용 되는 SELECT 문이 DataTable 일괄 처리 SQL 문과 같은 여러 결과를 반환 하는 경우 다음에 유의 하십시오.When the SELECT statement used to populate the DataTable objects returns multiple results, such as a batch SQL statement, be aware of the following:

  • 일괄 처리 SQL 문에서 여러 결과를 처리 하는 경우에 maxRecords 는 첫 번째 결과에만 적용 됩니다.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. 장으로 나뉜 결과를 포함 하는 행의 경우에도 마찬가지입니다 (.NET Framework Data Provider OLE DB에만 해당).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). 최상위 결과는로 제한 maxRecords 되지만 모든 자식 행이 추가 됩니다.The top level result is limited by maxRecords, but all child rows are added.

  • 결과 중 하나에 오류가 포함 된 경우 모든 후속 결과를 건너뜁니다.If one of the results contains an error, all subsequent results are skipped.

참고

는에 DataSet 표시 된 레코드 수를 초과 하지 않습니다 maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. 그러나 쿼리에서 생성 된 전체 resultset은 서버에서 계속 반환 됩니다.However, the entire resultset generated by the query is still returned from the server.

상속자 참고

재정의 하는 경우 Fill(DataSet) 파생된 클래스에서 호출 해야 기본 클래스의 Fill(DataSet) 메서드.When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

적용 대상

Fill(DataSet, String, IDataReader, Int32, Int32)

DataSet, DataTableIDataReader 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataSet의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet, DataTable, and IDataReader names.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill (System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int
Protected Overridable Function Fill (dataSet As DataSet, srcTable As String, dataReader As IDataReader, startRecord As Integer, maxRecords As Integer) As Integer

매개 변수

dataSet
DataSet

레코드와 스키마(필요한 경우)로 채울 DataSet입니다.A DataSet to fill with records and, if necessary, schema.

srcTable
String

테이블 매핑에 사용할 DataTable의 이름입니다.The name of the DataTable to use for table mapping.

dataReader
IDataReader

IDataReader의 이름입니다.The name of the IDataReader.

startRecord
Int32

0부터 시작되는 시작 레코드 번호입니다.The zero-based record number to start with.

maxRecords
Int32

검색할 수 있는 최대 레코드 수입니다.The maximum number of records to retrieve.

반환

Int32

DataSet에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataSet. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

적용 대상

Fill(DataSet, Int32, Int32, String)

DataSetDataSet 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int
Public Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String) As Integer

매개 변수

dataSet
DataSet

레코드와 스키마(필요한 경우)로 채울 DataSet입니다.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32

0부터 시작되는 시작 레코드 번호입니다.The zero-based record number to start with.

maxRecords
Int32

검색할 수 있는 최대 레코드 수입니다.The maximum number of records to retrieve.

srcTable
String

테이블 매핑에 사용할 원본 테이블의 이름입니다.The name of the source table to use for table mapping.

반환

Int32

DataSet에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataSet. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

예외

DataSet가 잘못되었습니다.The DataSet is invalid.

소스 테이블이 잘못된 경우The source table is invalid.

또는-or-

연결이 잘못된 경우The connection is invalid.

연결을 찾을 수 없는 경우The connection could not be found.

startRecord 매개 변수가 0보다 작은 경우The startRecord parameter is less than 0.

또는-or- maxRecords 매개 변수가 0보다 작은 경우The maxRecords parameter is less than 0.

예제

다음 예에서는 파생 클래스를 사용 하 여 OleDbDataAdapter DataSet Categories 테이블에서 10 행부터 시작 하 여을 15 개의 행으로 채웁니다.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with 15 rows, beginning at row 10, from the Categories table. 이 예에서는 만들었다고 가정를 OleDbDataAdapterDataSet합니다.This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, 9, 15, "Categories")
End Sub

설명

maxRecords값이 0 이면 시작 레코드 이후 발견 된 모든 레코드를 가져옵니다.A maxRecords value of 0 gets all records found after the start record. maxRecords가 남은 행 수보다 크면 나머지 행만 반환 되 고 오류는 발생 하지 않습니다.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned, and no error is issued.

해당 select 명령이 여러 결과를 반환 하는 문인 경우는 Fill maxRecords 첫 번째 결과에만 적용 됩니다.If the corresponding select command is a statement returning multiple results, Fill only applies maxRecords to the first result.

Fill메서드는 SELECT 문을 사용 하 여 데이터 소스에서 데이터를 검색 합니다.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionSELECT 문과 연결 된 개체는 유효 해야 하지만 열 필요는 없습니다.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. IDbConnection가 호출 되기 전에가 닫혀 있으면 Fill 데이터를 검색 한 다음 닫은 상태로 열립니다.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

명령에서 행을 반환 하지 않는 경우에는 테이블이 추가 되지 DataSet 않지만 예외가 발생 하지는 않습니다.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

DbDataAdapter를 채우는 동안 개체가 중복 된 열을 발견 하는 경우 DataTable "columnname 1", "columnname 2", "columnname 3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

지정 된 쿼리가 여러 결과를 반환 하는 경우 각 결과 집합은 별도의 테이블에 배치 됩니다.When the query specified returns multiple results, each result set is placed in a separate table. 추가 결과 집합이 지정한 테이블 이름 (예: "Table", "Table1", "Table2" 및 등)에 정수 값을 추가 하 여 이름이 지정 됩니다.Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). 행을 반환 하지 않는 쿼리에 대해서는 테이블이 생성 되지 않기 때문에 insert 쿼리를 처리 한 후 select 쿼리를 수행 하면 select 쿼리에 대해 생성 된 테이블의 이름이 "Table"로 지정 됩니다 .이 테이블은 첫 번째로 생성 되기 때문입니다.Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table", because it is the first table created. 열 및 테이블 이름을 사용 하 여 애플리케이션은 이러한 명명 패턴을 사용 하 여 충돌 하지 않도록 확인 해야 합니다.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Fill메서드는의 DataSet DataTable 이름과 대/소문자만 다른 여러 개체가 포함 된 시나리오를 지원 합니다.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. 이러한 경우는 Fill 대/소문자를 구분 하는 비교를 수행 하 여 해당 테이블을 찾고 정확히 일치 하는 항목이 없는 경우 새 테이블을 만듭니다.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

Fill가 호출 되 고에 DataSet DataTable 대/소문자만 다른 이름이 있는 하나만 포함 되어 있으면이 DataTable 업데이트 됩니다.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. 이 시나리오에서 비교는 대/소문자를 구분 하지 않습니다.In this scenario, the comparison is case insensitive. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

데이터 테이블을 채우는 동안 오류가 발생 하거나 예외가 발생 한 경우 오류가 발생 하기 전에 추가 된 행이 데이터 테이블에 남아 있습니다.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 나머지 작업은 중단 됩니다.The remainder of the operation is aborted.

를 채우는 데 사용 되는 SELECT 문이 DataSet 일괄 처리 SQL 문과 같은 여러 결과를 반환 하는 경우 다음에 유의 하십시오.When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, be aware of the following:

  • 일괄 처리 SQL 문에서 여러 결과를 처리 하는 경우에 maxRecords 는 첫 번째 결과에만 적용 됩니다.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. 장으로 나뉜 결과를 포함 하는 행의 경우에도 마찬가지입니다 (.NET Framework Data Provider OLE DB에만 해당).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). 최상위 결과는로 제한 maxRecords 되지만 모든 자식 행이 추가 됩니다.The top level result is limited by maxRecords, but all child rows are added.

  • 결과 중 하나에 오류가 포함 된 경우 모든 후속 결과를 건너뛰고에 추가 하지 않습니다 DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

후속 호출을 사용 하 여 Fill 의 콘텐츠를 새로 고칠 때 DataSet 두 가지 조건을 충족 해야 합니다.When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. SQL 문은를 채우는 데 처음 사용 된 것과 일치 해야 합니다 DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. 열 정보가 있어야 합니다.The Key column information must be present.

기본 키 정보가 있는 경우 중복 된 행은 조정 되며에 해당 하는에 한 번만 표시 됩니다 DataTable DataSet .If primary key information is present, any duplicate rows will be reconciled and only appear once in the DataTable that corresponds to the DataSet. 기본 키 정보는의 속성을 지정 하 여를 통해 설정 FillSchema PrimaryKey DataTable 하거나 속성을로 설정 하 여 MissingSchemaAction 설정할 수 있습니다 AddWithKey .Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

참고

여러 결과를 반환 하는 일괄 처리 SQL 문을 처리할 때 FillSchema OLE DB에 대 한 .NET Framework Data Provider의 구현은 첫 번째 결과에 대해서만 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 여러 결과에 대 한 스키마 정보를 검색 하려면 Fill 를로 설정 하 여를 사용 MissingSchemaAction AddWithKey 합니다.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

참고

는에 DataSet 표시 된 레코드 수를 초과 하지 않습니다 maxRecords .The DataSet will not contain more than the number of records indicated by maxRecords. 그러나 쿼리에서 생성 된 전체 결과 집합은 여전히 서버에서 반환 됩니다.However, the entire result set generated by the query is still returned from the server.

상속자 참고

재정의 하는 경우 Fill(DataSet) 파생된 클래스에서 호출 해야 기본 클래스의 Fill(DataSet) 메서드.When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

적용 대상

Fill(Int32, Int32, DataTable[])

지정된 레코드에서 시작하여 지정된 최대 레코드 수까지 검색하면서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

public:
 int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill (int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer

매개 변수

startRecord
Int32

0부터 시작되는 시작 레코드 번호입니다.The zero-based record number to start with.

maxRecords
Int32

검색할 수 있는 최대 레코드 수입니다.The maximum number of records to retrieve.

dataTables
DataTable[]

데이터 소스에서 채울 DataTable 개체입니다.The DataTable objects to fill from the data source.

반환

Int32

DataTable에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataTable. 행을 반환하지 않는 문의 영향을 받는 행은 이 값에 포함되지 않습니다.This value does not include rows affected by statements that do not return rows.

설명

Fill메서드는 연결 된 속성에 지정 된 SELECT 문을 사용 하 여 데이터 원본에서 행을 검색 합니다 SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. SELECT 문과 사용 하 여 연결 된 연결 개체는 유효 해야 합니다. 하지만 열려 있이 필요가 없습니다.The connection object associated with the SELECT statement must be valid, but it does not need to be open. 를 호출 하기 전에 연결을 닫으면 Fill 데이터를 검색 하 여 닫은 후 닫힙니다.If the connection is closed before Fill is called, it is opened to retrieve data, and then it is closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

Fill 작업이 대상에 행 추가 DataTable 개체를 DataSet만들기는 DataTable 경우 이미 없는 개체입니다.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. DataTable개체를 만들 때 Fill 일반적으로 작업은 열 이름 메타 데이터만 만듭니다.When creating DataTable objects, the Fill operation normally creates only column name metadata. 그러나 경우 합니다 MissingSchemaAction 속성이 AddWithKey, 적절 한 기본 키와 제약 조건도 만들어집니다.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

데이터 어댑터가를 채우는 동안 중복 된 열을 발견 하는 경우 DataTable "columnname1", "columnname2", "columnname3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the data adapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 에 여러 결과 집합을 추가 하는 경우 DataSet 각 결과 집합은 별도의 테이블에 배치 됩니다.When multiple result sets are added to the DataSet, each result set is placed in a separate table. 추가 결과 집합이 지정한 테이블 이름 (예: "Table", "Table1", "Table2" 및 등)에 정수 값을 추가 하 여 이름이 지정 됩니다.Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). 열 및 테이블 이름을 사용 하 여 애플리케이션은 이러한 명명 패턴을 사용 하 여 충돌 하지 않도록 확인 해야 합니다.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

를 채우는 데 사용 되는 SELECT 문에서 DataSet 일괄 처리 SQL 문과 같은 여러 결과가 반환 되는 경우 결과 중 하나에 오류가 포함 되 면 이후의 모든 결과는 건너뛰고에 추가 되지 않습니다 DataSet .When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statements, if one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

사용할 수는 Fill 메서드를 여러 번에 동일한 DataTable입니다.You can use the Fill method multiple times on the same DataTable. 기본 키가 있는 경우 들어오는 행이 이미 존재 하는 일치 하는 행과 병합 됩니다.If a primary key exists, incoming rows are merged with matching rows that already exist. 들어오는 행에 추가 된 기본 키가 없으면는 DataTable합니다.If no primary key exists, incoming rows are appended to the DataTable.

참고

여러 결과를 반환 하는 일괄 처리 SQL 문을 처리할 때 FillSchema OLE DB에 대 한 .NET Framework Data Provider의 구현은 첫 번째 결과에 대해서만 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 여러 결과에 대 한 스키마 정보를 검색 하려면 Fill 를로 설정 하 여를 사용 MissingSchemaAction AddWithKey 합니다.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

적용 대상

Fill(DataTable)

DataSet 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

public:
 int Fill(System::Data::DataTable ^ dataTable);
public int Fill (System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int
Public Function Fill (dataTable As DataTable) As Integer

매개 변수

dataTable
DataTable

테이블 매핑에 사용할 DataTable의 이름입니다.The name of the DataTable to use for table mapping.

반환

Int32

DataSet에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataSet. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

예외

소스 테이블이 잘못된 경우The source table is invalid.

설명

Fill메서드는 연결 된 속성에 지정 된 SELECT 문을 사용 하 여 데이터 원본에서 행을 검색 합니다 SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. SELECT 문과 사용 하 여 연결 된 연결 개체는 유효 해야 합니다. 하지만 열려 있이 필요가 없습니다.The connection object associated with the SELECT statement must be valid, but it does not need to be open. 전에 연결이 닫히면 Fill 는 데이터를 검색 하려면을 열고 다음 닫는 하는를 호출 합니다.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

Fill 작업이 대상에 행 추가 DataTable 개체를 DataSet만들기는 DataTable 경우 이미 없는 개체입니다.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. DataTable개체를 만들 때 Fill 일반적으로 작업은 열 이름 메타 데이터만 만듭니다.When creating DataTable objects, the Fill operation normally creates only column name metadata. 그러나 경우 합니다 MissingSchemaAction 속성이 AddWithKey, 적절 한 기본 키와 제약 조건도 만들어집니다.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

DbDataAdapter가를 채우는 동안 중복 된 열을 발견 하는 경우 DataTable "columnname 1", "columnname 2", "columnname 3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. 각 결과 집합에 여러 결과 집합이 추가 되 면 DataSet 별도의 테이블에 배치 됩니다.When multiple result sets are added to the DataSet each result set is placed in a separate table.

매개 변수로를 사용 하는의 오버 로드는 Fill DataTable 첫 번째 결과만 가져옵니다.The overload of Fill that takes DataTable as a parameter only obtains the first result. Fill DataSet 여러 결과를 얻기 위해 매개 변수로를 사용 하는의 오버 로드를 사용 합니다.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

Fill메서드는의 DataSet DataTable 이름과 대/소문자만 다른 여러 개체가 포함 된 시나리오를 지원 합니다.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. 이러한 경우는 Fill 대/소문자를 구분 하는 비교를 수행 하 여 해당 테이블을 찾고 정확히 일치 하는 항목이 없는 경우 새 테이블을 만듭니다.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

Fill가 호출 되 고에 DataSet DataTable 대/소문자만 다른 이름이 있는 하나만 포함 되어 있으면이 DataTable 업데이트 됩니다.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. 이 시나리오에서 비교는 대/소문자를 구분 하지 않습니다.In this scenario, the comparison is case insensitive. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

사용할 수는 Fill 메서드를 여러 번에 동일한 DataTable입니다.You can use the Fill method multiple times on the same DataTable. 기본 키가 있는 경우 들어오는 행이 이미 존재 하는 일치 하는 행과 병합 됩니다.If a primary key exists, incoming rows are merged with matching rows that already exist. 들어오는 행에 추가 된 기본 키가 없으면는 DataTable합니다.If no primary key exists, incoming rows are appended to the DataTable.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

참고

구현의 여러 결과 반환 하는 SQL 문을 일괄 처리할 때 FillFillSchema .NET Framework 데이터 공급자는 결과 대해서만 첫 번째 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

상속자 참고

이 메서드의 오버 로드 Fill(DataSet) 는 보호 되며 .NET Framework 데이터 공급자에서 사용 하도록 설계 되었습니다.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

적용 대상

Fill(DataTable, IDataReader)

지정된 DataTableIDataReader 이름을 사용하여 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable and IDataReader names.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int
Protected Overridable Function Fill (dataTable As DataTable, dataReader As IDataReader) As Integer

매개 변수

dataTable
DataTable

레코드와 스키마(필요한 경우)로 채울 DataTable입니다.A DataTable to fill with records and, if necessary, schema.

dataReader
IDataReader

IDataReader의 이름입니다.The name of the IDataReader.

반환

Int32

DataTable에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataTable. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

적용 대상

Fill(DataSet, String)

DataSetDataSet 이름을 사용하여 데이터 소스의 행과 일치하도록 DataTable의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int
Public Function Fill (dataSet As DataSet, srcTable As String) As Integer

매개 변수

dataSet
DataSet

레코드와 스키마(필요한 경우)로 채울 DataSet입니다.A DataSet to fill with records and, if necessary, schema.

srcTable
String

테이블 매핑에 사용할 원본 테이블의 이름입니다.The name of the source table to use for table mapping.

반환

Int32

DataSet에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataSet. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

예외

소스 테이블이 잘못된 경우The source table is invalid.

예제

다음 예에서는 파생 클래스인를 사용 하 여 OleDbDataAdapterDataSet categories 테이블의 행으로 채웁니다.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with rows from the categories table. 이 예에서는 만들었다고 가정를 OleDbDataAdapterDataSet합니다.This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, "Categories")
End Sub

설명

Fill메서드는 SELECT 문을 사용 하 여 데이터 소스에서 데이터를 검색 합니다.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionSelect 명령과 연결 된 개체는 유효 해야 하지만 열 필요는 없습니다.The IDbConnection object associated with the select command must be valid, but it does not need to be open. IDbConnection가 호출 되기 전에가 닫혀 있으면 Fill 데이터를 검색 한 다음 닫힌 것으로 열립니다.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

명령에서 행을 반환 하지 않는 경우에는 테이블이 추가 되지 않으며 DataSet 예외가 발생 하지 않습니다.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

DbDataAdapter를 채우는 동안 개체가 중복 된 열을 발견 하는 경우에는 DataTable "columnname1", "columnname2", "columnname3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

지정 된 쿼리가 여러 결과를 반환 하는 경우 각 결과 집합은 별도의 테이블에 배치 됩니다.When the query specified returns multiple results, each result set is placed in a separate table. 추가 결과 집합이 지정한 테이블 이름 (예: "Table", "Table1", "Table2" 및 등)에 정수 값을 추가 하 여 이름이 지정 됩니다.Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). 행을 반환 하지 않는 쿼리에 대해서는 테이블이 생성 되지 않으므로 insert 쿼리를 처리 한 후 select 쿼리를 수행 하는 경우 select 쿼리에 대해 생성 된 테이블은 첫 번째 테이블 이기 때문에 "Table"로 이름이 지정 됩니다.Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. 열 및 테이블 이름을 사용 하 여 애플리케이션은 이러한 명명 패턴을 사용 하 여 충돌 하지 않도록 확인 해야 합니다.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Fill메서드는의 DataSet DataTable 이름과 대/소문자만 다른 여러 개체가 포함 된 시나리오를 지원 합니다.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. 이러한 경우는 Fill 대/소문자를 구분 하는 비교를 수행 하 여 해당 테이블을 찾고 정확히 일치 하는 항목이 없는 경우 새 테이블을 만듭니다.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

Fill가 호출 되 고에 DataSet DataTable 대/소문자만 다른 이름이 있는 하나만 포함 되어 있으면이 DataTable 업데이트 됩니다.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. 이 시나리오에서 비교는 대/소문자를 구분 하지 않습니다.In this scenario, the comparison is case insensitive. 다음 c # 코드에서는이 동작을 보여 줍니다.The following C# code illustrates this behavior.

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

데이터 테이블을 채우는 동안 오류가 발생 하거나 예외가 발생 한 경우 오류가 발생 하기 전에 추가 된 행이 데이터 테이블에 남아 있습니다.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 나머지 작업은 중단 됩니다.The remainder of the operation is aborted.

를 채우는 데 사용 되는 SELECT 문이 DataSet 일괄 처리 SQL 문과 같은 여러 결과를 반환 하는 경우 다음에 유의 하십시오.When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statement, be aware of the following:

  • 결과 중 하나에 오류가 포함 된 경우 모든 후속 결과를 건너뛰고에 추가 하지 않습니다 DataSet .If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

후속 호출을 사용 하 여 Fill 의 콘텐츠를 새로 고칠 때 DataSet 두 가지 조건을 충족 해야 합니다.When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. SQL 문은를 채우는 데 처음 사용 된 것과 일치 해야 합니다 DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. 열 정보가 있어야 합니다.The Key column information must be present. 기본 키 정보가 있는 경우 중복 된 행은 조정 되며에 해당 하는에 한 번만 표시 됩니다 DataTable DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. 기본 키 정보는의 속성을 지정 하 여를 통해 설정 FillSchema PrimaryKey DataTable 하거나 속성을로 설정 하 여 MissingSchemaAction 설정할 수 있습니다 AddWithKey .Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

참고

여러 결과를 반환 하는 일괄 처리 SQL 문을 처리할 때 FillSchema OLE DB에 대 한 .NET Framework Data Provider의 구현은 첫 번째 결과에 대해서만 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 여러 결과에 대 한 스키마 정보를 검색 하려면 Fill 를로 설정 하 여를 사용 MissingSchemaAction AddWithKey 합니다.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

상속자 참고

재정의 하는 경우 Fill(DataSet) 파생된 클래스에서 호출 해야 기본 클래스의 Fill(DataSet) 메서드.When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

적용 대상

Fill(DataSet)

DataSet의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in the DataSet.

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill (System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int
Public Overrides Function Fill (dataSet As DataSet) As Integer

매개 변수

dataSet
DataSet

레코드와 스키마(필요한 경우)로 채울 DataSet입니다.A DataSet to fill with records and, if necessary, schema.

반환

Int32

DataSet에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataSet. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

구현

설명

Fill메서드는 SELECT 문을 사용 하 여 데이터 소스에서 데이터를 검색 합니다.The Fill method retrieves the data from the data source using a SELECT statement. IDbConnectionSelect 명령과 연결 된 개체는 유효 해야 하지만 열 필요는 없습니다.The IDbConnection object associated with the select command must be valid, but it does not need to be open. IDbConnection가 호출 되기 전에가 닫혀 있으면 Fill 데이터를 검색 한 다음 닫은 상태로 열립니다.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

데이터 테이블을 채우는 동안 오류가 발생 하거나 예외가 발생 한 경우 오류가 발생 하기 전에 추가 된 행이 데이터 테이블에 남아 있습니다.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. 나머지 작업은 중단 됩니다.The remainder of the operation is aborted.

명령에서 행을 반환 하지 않는 경우에는 테이블이 추가 되지 않으며 DataSet 예외가 발생 하지 않습니다.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

개체에서 DbDataAdapter 를 채우는 동안 중복 된 열이 발생 하는 경우 DataTable "columnname 1", "columnname 2", "columnname 3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

지정 된 쿼리가 여러 결과를 반환할 때 쿼리를 반환 하는 각 행에 대 한 결과 집합이 별도의 테이블에 배치 됩니다.When the query specified returns multiple results, the result set for each row returning query is placed in a separate table. 추가 결과 집합이 지정한 테이블 이름 (예: "Table", "Table1", "Table2" 및 등)에 정수 값을 추가 하 여 이름이 지정 됩니다.Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). 행을 반환 하지 않는 쿼리에 대해서는 테이블이 생성 되지 않기 때문에 insert 쿼리를 처리 한 후 select 쿼리를 수행 하면 select 쿼리에 대해 생성 된 테이블은 첫 번째 테이블이 만들어지므로 "Table"로 지정 됩니다.Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table" because it is the first table created. 열 및 테이블 이름을 사용 하 여 애플리케이션은 이러한 명명 패턴을 사용 하 여 충돌 하지 않도록 확인 해야 합니다.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

를 채우는 데 사용 되는 SELECT 문에서 DataSet 일괄 처리 SQL 문과 같은 여러 결과가 반환 되는 경우 결과 중 하나에 오류가 포함 되어 있으면 이후의 모든 결과는 건너뛰고에 추가 되지 않습니다 DataSet .When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, if one of the results contains an error, all subsequent results are skipped and are not added to the DataSet.

후속 호출을 사용 하 여 Fill 의 콘텐츠를 새로 고칠 때 DataSet 두 가지 조건을 충족 해야 합니다.When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. SQL 문은를 채우는 데 처음 사용 된 것과 일치 해야 합니다 DataSet .The SQL statement should match the one initially used to populate the DataSet.

  2. 열 정보가 있어야 합니다.The Key column information must be present.

기본 키 정보가 있는 경우 중복 된 행은 조정 되며에 해당 하는에 한 번만 표시 됩니다 DataTable DataSet .If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. 기본 키 정보는의 속성을 지정 하 여를 통해 설정 FillSchema PrimaryKey DataTable 하거나 속성을로 설정 하 여 MissingSchemaAction 설정할 수 있습니다 AddWithKey .Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

참고

여러 결과를 반환 하는 일괄 처리 SQL 문을 처리할 때 FillSchema OLE DB에 대 한 .NET Framework Data Provider의 구현은 첫 번째 결과에 대해서만 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 여러 결과에 대 한 스키마 정보를 검색 하려면 Fill 를로 설정 하 여를 사용 MissingSchemaAction AddWithKey 합니다.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

적용 대상

Fill(DataTable, IDbCommand, CommandBehavior)

지정된 DataTable, DataTableIDbCommand를 사용하여 데이터 소스의 행과 일치하도록 CommandBehavior의 행을 추가하거나 새로 고칩니다.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTable As DataTable, command As IDbCommand, behavior As CommandBehavior) As Integer

매개 변수

dataTable
DataTable

레코드와 스키마(필요한 경우)로 채울 DataTable입니다.A DataTable to fill with records and, if necessary, schema.

command
IDbCommand

데이터 소스에서 행을 검색하는 데 사용할 SQL SELECT 문입니다.The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior

CommandBehavior 값 중 하나입니다.One of the CommandBehavior values.

반환

Int32

DataTable에 성공적으로 추가했거나 새로 고친 행의 수를 반환합니다.The number of rows successfully added to or refreshed in the DataTable. 여기에는 행을 반환하지 않는 문의 영향을 받는 행은 포함되지 않습니다.This does not include rows affected by statements that do not return rows.

설명

Fill메서드는 연결 된 속성에 지정 된 SELECT 문을 사용 하 여 데이터 원본에서 행을 검색 합니다 SelectCommand .The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. SELECT 문과 사용 하 여 연결 된 연결 개체는 유효 해야 합니다. 하지만 열려 있이 필요가 없습니다.The connection object associated with the SELECT statement must be valid, but it does not need to be open. 을 호출 하기 전에 연결을 닫으면 Fill 데이터를 검색 한 후 닫은 상태로 열립니다.If the connection is closed before Fill is called, it is opened to retrieve data and then closed. 연결 하기 전에 열려 있으면 Fill 는 호출을 열린 상태로 유지 합니다.If the connection is open before Fill is called, it remains open.

Fill그런 다음 작업이의 지정 된 대상 개체에 행을 추가 하 여 DataTable DataSet DataTable 개체가 아직 없으면 만듭니다.The Fill operation then adds the rows to the specified destination DataTable object in the DataSet, creating the DataTable object if it does not already exist. 개체를 만들 때 DataTable Fill 일반적으로 작업은 열 이름 메타 데이터만 만듭니다.When creating a DataTable object, the Fill operation normally creates only column name metadata. 그러나 경우 합니다 MissingSchemaAction 속성이 AddWithKey, 적절 한 기본 키와 제약 조건도 만들어집니다.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

DbDataAdapter를 채우는 동안 개체가 중복 된 열을 발견 하는 경우 DataTable "columnname 1", "columnname 2", "columnname 3" 등의 패턴을 사용 하 여 후속 열의 이름을 생성 합니다.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname 1", "columnname 2", "columnname 3", and so on. 들어오는 데이터에 명명 되지 않은 열이 포함 된 경우 DataSet "Column1", "Column2" 패턴에 따라에 배치 됩니다.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

매개 변수로를 사용 하는의 오버 로드는 Fill DataTable 첫 번째 결과만 가져옵니다.The overload of Fill that takes DataTable as a parameter only obtains the first result. Fill DataSet 여러 결과를 얻기 위해 매개 변수로를 사용 하는의 오버 로드를 사용 합니다.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

사용할 수는 Fill 메서드를 여러 번에 동일한 DataTable입니다.You can use the Fill method multiple times on the same DataTable. 기본 키가 있는 경우 들어오는 행이 이미 존재 하는 일치 하는 행과 병합 됩니다.If a primary key exists, incoming rows are merged with matching rows that already exist. 들어오는 행에 추가 된 기본 키가 없으면는 DataTable합니다.If no primary key exists, incoming rows are appended to the DataTable.

SelectCommand 가 OUTER JOIN의 결과를 반환하면 DataAdapter 는 결과 PrimaryKey 에 대해 DataTable값을 설정하지 않습니다.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. 중복 행을 올바르게 확인할 수 있도록 기본 키를 명시적으로 정의 해야 합니다.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. 자세한 내용은 기본 키 정의합니다.For more information, see Defining Primary Keys.

참고

여러 결과를 반환 하는 일괄 처리 SQL 문을 처리할 때 FillSchema OLE DB에 대 한 .NET Framework Data Provider의 구현은 첫 번째 결과에 대해서만 스키마 정보를 검색 합니다.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. 여러 결과에 대 한 스키마 정보를 검색 하려면 Fill 를로 설정 하 여를 사용 MissingSchemaAction AddWithKey 합니다.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

상속자 참고

이 메서드의 오버 로드 Fill(DataSet) 는 보호 되며 .NET Framework 데이터 공급자에서 사용 하도록 설계 되었습니다.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

적용 대상