共用方式為


DbDataAdapter.Fill 方法

定義

填補 a DataSetDataTable

多載

名稱 Description
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

在指定範圍內 DataSet 新增或刷新資料列,以配合資料來源的資料表 DataSet 名稱、指令字串及指令行為。

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

在指定範圍內 DataSet 新增或刷新資料列,以 DataSet 配合資料來源中的 and DataTable 名稱。

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

在指定範圍內DataSet新增或刷新資料列,以配合資料來源中的列,使用、 DataSetDataTable、 和 IDataReader 名稱。

Fill(DataSet, Int32, Int32, String)

在指定範圍內 DataSet 新增或刷新資料列,以 DataSet 配合資料來源中的 and DataTable 名稱。

Fill(Int32, Int32, DataTable[])

從指定記錄開始,從指定紀錄開始,新增或刷新一個或多個 DataTable 物件的列,以匹配資料來源中的列,並取得最多最多記錄數。

Fill(DataTable)

在指定範圍內 DataSet 新增或刷新資料列,以符合資料來源中使用 DataTable 名稱的列。

Fill(DataTable, IDataReader)

使用 指定的 DataTableIDataReader 名稱,新增或刷新 a DataTable 中的列以匹配資料來源中的列。

Fill(DataSet, String)

使用 DataSetDataTable 名稱新增或刷新資料來源中的列,使其與資料來源中的列DataSet相符。

Fill(DataSet)

新增或刷新 DataSet.

Fill(DataTable, IDbCommand, CommandBehavior)

使用 、 DataTableIDbCommandCommandBehavior和 ,新增或刷新 a DataTable 中的列以匹配資料來源中的列。

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

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

在指定範圍內 DataSet 新增或刷新資料列,以配合資料來源的資料表 DataSet 名稱、指令字串及指令行為。

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

A DataSet 用來填充記錄,必要時還要用結構。

startRecord
Int32

首先是零基的紀錄數。

maxRecords
Int32

要擷取的記錄數目上限。 指定 0 以取得起始記錄之後的所有紀錄。

srcTable
String

用於資料表映射的來源資料表名稱。

command
IDbCommand

SQL SELECT 陳述式用於從資料來源擷取資料列。

behavior
CommandBehavior

這是其中一項 CommandBehavior 價值。

傳回

成功新增或刷新的 DataSet列數。 這不包含那些不回傳列的語句所影響的列。

例外狀況

來源資料表無效。

參數 startRecord 小於 0。

-或-

參數 maxRecords 小於 0。

備註

值為 maxRecords 0 則會取得起始紀錄之後的所有紀錄。 若 maxRecords 大於剩餘列數,則僅回傳剩餘列,且不會發出錯誤。

Fill 方法透過相關 SelectCommand 屬性指定的 SELECT 語句,從資料來源擷取資料列。 與 SELECT 語句相關的連接物件必須有效,但不必是開啟的。 如果連線在呼叫前 Fill 已關閉,則會開啟以取得資料,然後關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

Fill此操作接著將列加入 中的目標DataTable物件DataSet,若物件尚未存在,則建立DataTable該物件。 在建立 DataTable 物件時,操作 Fill 通常只建立欄位名稱的元資料。 然而,若 MissingSchemaAction 屬性設定為 AddWithKey,也會建立適當的主鍵與約束。

如果 DbDataAdapter 在填充 時 DataTable遇到重複欄位,則會產生後續欄位名稱,使用「欄位名稱1」、「欄位名稱2」、「欄位名稱3」等模式。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet 。 當多個結果集加入時, DataSet 每個結果集會被放在獨立的表格中。 額外的結果集則會在指定的資料表名稱後加上整數值來命名(例如「Table」、「Table1」、「Table2」等)。 如果你的應用程式使用欄位名和資料表名稱,請確保這些命名模式沒有衝突。

Fill 方法支援 DataSet 包含多個 DataTable 物件,且名稱僅在大小寫上有所不同。 在這種情況下, Fill 會執行大小寫區分比較以尋找對應的資料表,若無完全匹配則建立新資料表。 以下 C# 程式碼說明了這種行為。

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 該 在這種情況下,這種比較並不區分大小寫。 以下 C# 程式碼說明了這種行為。

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.

你可以在同一台DataTable機器上重複使用這個Fill方法。 若存在主鍵,輸入的列會與已存在的匹配列合併。 若不存在主鍵,則會將輸入的列附加在 DataTable

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

備註

當處理回傳多個結果的批次 SQL 語句時,.FillSchemaNET Framework 資料提供者的實作Fill與僅取得第一個結果的結構資訊。

給繼承者的注意事項

此方法的過載 Fill(DataSet) 受到保護,並設計供 .NET Framework 資料提供者使用。

另請參閱

適用於

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

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

在指定範圍內 DataSet 新增或刷新資料列,以 DataSet 配合資料來源中的 and DataTable 名稱。

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從資料來源填入的物件。

startRecord
Int32

首先是零基的紀錄數。

maxRecords
Int32

要擷取的記錄數目上限。 指定 0 以取得起始記錄之後的所有紀錄。

command
IDbCommand

他們 IDbCommand 執行以填補 DataTable 物品。

behavior
CommandBehavior

這是其中一項 CommandBehavior 價值。

傳回

資料表中新增或刷新的列數。

例外狀況

這個 DataSet 是無效的。

來源資料表無效。

-或-

這個連結無效。

但找不到關聯。

參數 startRecord 小於 0。

-或-

參數 maxRecords 小於 0。

備註

值為 maxRecords 0 則會取得起始紀錄之後的所有紀錄。 若 maxRecords 大於剩餘列數,則僅回傳剩餘列,且不會發出錯誤。

Fill 方法透過 SELECT 語句從資料來源擷取資料。 IDbConnection與 SELECT 陳述式相關聯的物件必須有效,但不必是開啟的。 如果 IDbConnection 在呼叫前 Fill 已封閉,則先開啟以取得資料,然後再關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

若指令未回傳任何列,則不會新增資料表, DataSet但不會提出例外。

DbDataAdapter 物件在填充 時 DataTable遇到重複欄位,會產生後續欄位名稱,模式為「欄位名稱1」、「欄位名稱2」、「欄位名稱3」等。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet

當指定的查詢回傳多個結果時,每個結果集會被放在獨立的表格中。 額外的結果集則會在指定的資料表名稱後加上整數值來命名(例如「Table」、「Table1」、「Table2」等)。 由於沒有資料表會為不回傳資料列的查詢建立,如果你先處理一個插入查詢,接著是 select 查詢,為該 select 查詢建立的表格會命名為「Table」,因為它是第一個建立的資料表。 如果你的應用程式使用欄位名和資料表名稱,請確保這些命名模式沒有衝突。

Fill 方法支援 DataSet 包含多個 DataTable 物件,且名稱僅在大小寫上有所不同。 在這種情況下, Fill 會執行大小寫區分比較以尋找對應的資料表,若無完全匹配則建立新資料表。 以下 C# 程式碼說明了這種行為。

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 該 在這種情況下,這種比較並不區分大小寫。 以下 C# 程式碼說明了這種行為。

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.

若在填充資料表時遇到錯誤或異常,錯誤發生前新增的列仍會保留在資料表中。 剩餘的行動被取消。

當用來填充 DataTable 物件的 SELECT 陳述式回傳多個結果,例如批次 SQL 陳述式時,請注意以下事項:

  • 當處理批次 SQL 陳述式的多個結果時, maxRecords 只對第一個結果生效。 包含章節結果的列亦同理(僅限 OLE DB 的 .NET Framework 資料提供者)。 頂層結果受限於 maxRecords,但所有子列都會被加入。

  • 若結果中有錯誤,後續結果皆被跳過。

備註

DataSet 記錄不會超過由 所 maxRecords標示的數量。 然而,查詢產生的整個結果集仍會從伺服器回傳。

給繼承者的注意事項

在導出類別中覆 Fill(DataSet) 寫時,務必呼叫基底類別的方法 Fill(DataSet)

另請參閱

適用於

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

在指定範圍內DataSet新增或刷新資料列,以配合資料來源中的列,使用、 DataSetDataTable、 和 IDataReader 名稱。

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

A DataSet 用來填充記錄,必要時還要用結構。

srcTable
String

用於表格映射的名稱 DataTable

dataReader
IDataReader

這個名稱 IDataReader

startRecord
Int32

首先是零基的紀錄數。

maxRecords
Int32

要擷取的記錄數目上限。 指定 0 以取得起始記錄之後的所有紀錄。

傳回

成功新增或刷新的 DataSet列數。 這不包含那些不回傳列的語句所影響的列。

例外狀況

startRecord 小於0。

-或-

maxRecords 小於0。

備註

值為 maxRecords 0 則會取得起始紀錄之後的所有紀錄。 若 maxRecords 大於剩餘列數,則僅回傳剩餘列,且不會發出錯誤。

適用於

Fill(DataSet, Int32, Int32, String)

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

在指定範圍內 DataSet 新增或刷新資料列,以 DataSet 配合資料來源中的 and DataTable 名稱。

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

A DataSet 用來填充記錄,必要時還要用結構。

startRecord
Int32

首先是零基的紀錄數。

maxRecords
Int32

要擷取的記錄數目上限。 指定 0 以取得起始記錄之後的所有紀錄。

srcTable
String

用於資料表映射的來源資料表名稱。

傳回

成功新增或刷新的 DataSet列數。 這不包含那些不回傳列的語句所影響的列。

例外狀況

這個 DataSet 是無效的。

來源資料表無效。

-或-

這個連結無效。

但找不到關聯。

參數 startRecord 小於 0。

-或-

參數 maxRecords 小於 0。

範例

以下範例使用導出類別 OleDbDataAdapter,從類別表的第 10 列開始,填入 DataSet 15 列。 此範例假設你已創造一個 OleDbDataAdapterDataSet

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 則會取得起始紀錄之後的所有紀錄。 若 maxRecords 大於剩餘列數,則僅回傳剩餘列,且不會產生錯誤。

如果對應的 select 指令是回傳多個結果的陳述式,則 Fill 只適用於 maxRecords 第一個結果。

Fill 方法透過 SELECT 語句從資料來源擷取資料。 IDbConnection與 SELECT 陳述式相關聯的物件必須有效,但不必是開啟的。 如果 IDbConnection 在被呼叫前 Fill 已封閉,則先開啟以取得資料,然後再關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

若指令未回傳任何列,則不會新增資料表, DataSet但不會提出例外。

DbDataAdapter 物件在填充 時 DataTable遇到重複欄位,會產生後續欄位名稱,模式為「欄位名稱1」、「欄位名稱2」、「欄位名稱3」等。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet

當指定的查詢回傳多個結果時,每個結果集會被放在獨立的表格中。 額外的結果集則會在指定的資料表名稱後加上整數值來命名(例如「Table」、「Table1」、「Table2」等)。 因為沒有資料表會為不回傳列的查詢建立,如果你處理一個插入查詢,接著是 select 查詢,為該 select 查詢建立的表格會命名為「Table」,因為它是第一個建立的表格。 如果你的應用程式使用欄位名和資料表名稱,請確保這些命名模式沒有衝突。

Fill 方法支援 DataSet 包含多個 DataTable 物件,且名稱僅在大小寫上有所不同。 在這種情況下, Fill 會執行大小寫區分比較以尋找對應的資料表,若無完全匹配則建立新資料表。 以下 C# 程式碼說明了這種行為。

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 該 在這種情況下,這種比較並不區分大小寫。 以下 C# 程式碼說明了這種行為。

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.

若在填充資料表時遇到錯誤或異常,錯誤發生前新增的列仍會保留在資料表中。 剩餘的行動被取消。

當用來填 DataSet 入多個結果(例如批次 SQL 陳述式)時,請注意以下事項:

  • 當處理批次 SQL 陳述式的多個結果時, maxRecords 只對第一個結果生效。 包含章節結果的列亦同理(僅限 OLE DB 的 .NET Framework 資料提供者)。 頂層結果受限於 maxRecords,但所有子列都會被加入。

  • 若其中某結果有錯誤,則跳過所有後續結果,且不加入 DataSet

在使用後續 Fill 呼叫來刷新 DataSet的內容時,必須滿足兩個條件:

  1. SQL 陳述句應該與最初用來填充 DataSet.

  2. 必須包含 關鍵 欄位資訊。

若存在主鍵資訊,重複的列將被對應DataTableDataSet於 。 主鍵資訊可以透過 ,指定 PrimaryKey 的屬性DataTable來設定FillSchema,或將屬性設MissingSchemaActionAddWithKey

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

備註

當處理回傳多個結果的批次 SQL 語句時,.NET Framework 資料提供者用於 OLE DB 的實作 FillSchema 只會取得第一個結果的結構資訊。 要取得多個結果的結構資訊,請將 與 MissingSchemaAction 集合 一起使用FillAddWithKey

備註

DataSet 記錄不會超過由 所 maxRecords標示的數量。 然而,查詢產生的整個結果集仍會從伺服器回傳。

給繼承者的注意事項

在導出類別中覆 Fill(DataSet) 寫時,務必呼叫基底類別的方法 Fill(DataSet)

另請參閱

適用於

Fill(Int32, Int32, DataTable[])

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

從指定記錄開始,從指定紀錄開始,新增或刷新一個或多個 DataTable 物件的列,以匹配資料來源中的列,並取得最多最多記錄數。

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

首先是零基的紀錄數。

maxRecords
Int32

要擷取的記錄數目上限。 指定 0 以取得起始記錄之後的所有紀錄。

dataTables
DataTable[]

DataTable從資料來源填入的物件。

傳回

物件中成功新增或刷新 DataTable 的列數。 此值不包含受未回傳列的語句影響的列。

例外狀況

dataTablesnull 空陣列。

startRecord 小於0。

-或-

maxRecords 小於0。

備註

值為 maxRecords 0 則會取得起始紀錄之後的所有紀錄。 若 maxRecords 大於剩餘列數,則僅回傳剩餘列,且不會產生錯誤。

Fill 方法透過相關 SelectCommand 屬性指定的 SELECT 語句,從資料來源擷取資料列。 與 SELECT 語句相關的連接物件必須有效,但不必是開啟的。 如果連線在被呼叫前 Fill 已關閉,則會先開啟以取得資料,然後再關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

Fill此操作接著將列加入 中的目標DataTable物件DataSet,若物件尚未存在,則建立DataTable該物件。 在建立 DataTable 物件時,操作 Fill 通常只建立欄位名稱的元資料。 然而,若 MissingSchemaAction 屬性設定為 AddWithKey,也會建立適當的主鍵與約束。

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

如果資料介面卡在填充 時 DataTable遇到重複欄位,會產生後續欄位名稱,使用「columnname1」、「columnname2」、「columnname3」等模式。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet 。 當多個結果集加入 DataSet時,每個結果集會被放在獨立的表格中。 額外的結果集則會在指定的資料表名稱後加上整數值來命名(例如「Table」、「Table1」、「Table2」等)。 如果你的應用程式使用欄位名和資料表名稱,請確保這些命名模式沒有衝突。

當用來填充回傳的 DataSet SELECT 陳述句會同時輸入多個結果(例如批次 SQL 陳述式),如果其中一個結果包含錯誤,所有後續結果都會被跳過且不會加入 DataSet

你可以在同一台DataTable機器上重複使用這個Fill方法。 若存在主鍵,輸入的列會與已存在的匹配列合併。 若不存在主鍵,則會將輸入的列附加在 DataTable

備註

當處理回傳多個結果的批次 SQL 語句時,.NET Framework 資料提供者用於 OLE DB 的實作 FillSchema 只會取得第一個結果的結構資訊。 要取得多個結果的結構資訊,請將 與 MissingSchemaAction 集合 一起使用FillAddWithKey

另請參閱

適用於

Fill(DataTable)

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

在指定範圍內 DataSet 新增或刷新資料列,以符合資料來源中使用 DataTable 名稱的列。

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

傳回

成功新增或刷新的 DataSet列數。 這不包含那些不回傳列的語句所影響的列。

例外狀況

來源資料表無效。

備註

Fill 方法透過相關 SelectCommand 屬性指定的 SELECT 語句,從資料來源擷取資料列。 與 SELECT 語句相關的連接物件必須有效,但不必是開啟的。 如果連線在呼叫前 Fill 已關閉,則會開啟以取得資料,然後關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

Fill此操作接著將列加入 中的目標DataTable物件DataSet,若物件尚未存在,則建立DataTable該物件。 在建立 DataTable 物件時,操作 Fill 通常只建立欄位名稱的元資料。 然而,若 MissingSchemaAction 屬性設定為 AddWithKey,也會建立適當的主鍵與約束。

如果 DbDataAdapter 在填充 時 DataTable遇到重複欄位,則會產生後續欄位名稱,使用「欄位名稱1」、「欄位名稱2」、「欄位名稱3」等模式。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet 。 當多個結果集加入時, DataSet 每個結果集會被放在獨立的表格中。

該參數DataTable的過載Fill只得到第一個結果。 使用一個 的DataSet超載Fill作為參數,以獲得多個結果。

Fill 方法支援 DataSet 包含多個 DataTable 物件,且名稱僅在大小寫上有所不同。 在這種情況下, Fill 會執行大小寫區分比較以尋找對應的資料表,若無完全匹配則建立新資料表。 以下 C# 程式碼說明了這種行為。

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 該 在這種情況下,這種比較並不區分大小寫。 以下 C# 程式碼說明了這種行為。

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.

你可以在同一台DataTable機器上重複使用這個Fill方法。 若存在主鍵,輸入的列會與已存在的匹配列合併。 若不存在主鍵,則會將輸入的列附加在 DataTable

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

備註

當處理回傳多個結果的批次 SQL 語句時,.FillSchemaNET Framework 資料提供者的實作Fill與僅取得第一個結果的結構資訊。

給繼承者的注意事項

此方法的過載 Fill(DataSet) 受到保護,並設計供 .NET Framework 資料提供者使用。

另請參閱

適用於

Fill(DataTable, IDataReader)

使用 指定的 DataTableIDataReader 名稱,新增或刷新 a DataTable 中的列以匹配資料來源中的列。

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

A DataTable 用來填充記錄,必要時還要用結構。

dataReader
IDataReader

這個名稱 IDataReader

傳回

成功新增或刷新的 DataTable列數。 這不包含那些不回傳列的語句所影響的列。

適用於

Fill(DataSet, String)

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

使用 DataSetDataTable 名稱新增或刷新資料來源中的列,使其與資料來源中的列DataSet相符。

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

A DataSet 用來填充記錄,必要時還要用結構。

srcTable
String

用於資料表映射的來源資料表名稱。

傳回

成功新增或刷新的 DataSet列數。 這不包含那些不回傳列的語句所影響的列。

例外狀況

來源資料表無效。

範例

以下範例使用導出類別 OleDbDataAdapter,將類別表中的列填入 a DataSet 。 此範例假設你已創造一個 OleDbDataAdapterDataSet

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 語句從資料來源擷取資料。 IDbConnection與 select 指令相關的物件必須是有效的,但不必是開啟的。 如果 IDbConnection 在呼叫前 Fill 已封閉,則先開啟以取得資料,然後再關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

若指令未回傳任何列,則不會新增資料表至 DataSet,且不會提出例外。

如果 DbDataAdapter 物件在填充 時 DataTable遇到重複欄位,會產生後續欄位名稱,使用「columnname1」、「columnname2」、「columnname3」等模式。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet

當指定的查詢回傳多個結果時,每個結果集會被放在獨立的表格中。 額外的結果集則會在指定的資料表名稱後加上整數值來命名(例如「Table」、「Table1」、「Table2」等)。 由於沒有資料表會為不回傳資料列的查詢建立,如果你先處理一個插入查詢,接著是 select 查詢,為該 select 查詢建立的表格會命名為「Table」,因為它是第一個建立的資料表。 如果你的應用程式使用欄位名和資料表名稱,請確保這些命名模式沒有衝突。

Fill 方法支援 DataSet 包含多個 DataTable 物件,且名稱僅在大小寫上有所不同。 在這種情況下, Fill 會執行大小寫區分比較以尋找對應的資料表,若無完全匹配則建立新資料表。 以下 C# 程式碼說明了這種行為。

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 該 在這種情況下,這種比較並不區分大小寫。 以下 C# 程式碼說明了這種行為。

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.

若在填充資料表時遇到錯誤或異常,錯誤發生前新增的列仍會保留在資料表中。 剩餘的行動被取消。

當使用 SELECT 陳述式來填充 DataSet 多個結果時,例如批次 SQL 陳述式,請注意以下事項:

  • 若其中某結果有錯誤,則跳過所有後續結果,且不加入 DataSet

在使用後續 Fill 呼叫來刷新 DataSet的內容時,必須滿足兩個條件:

  1. SQL 陳述句應該與最初用來填充 DataSet.

  2. 必須包含 關鍵 欄位資訊。 若存在主鍵資訊,重複列會被調和,且只在對應 的 DataSetDataTable出現一次。 主鍵資訊可以透過 ,指定 PrimaryKey 的屬性DataTable來設定FillSchema,或將屬性設MissingSchemaActionAddWithKey

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

備註

當處理回傳多個結果的批次 SQL 語句時,.NET Framework 資料提供者用於 OLE DB 的實作 FillSchema 只會取得第一個結果的結構資訊。 要取得多個結果的結構資訊,請將 與 MissingSchemaAction 集合 一起使用FillAddWithKey

給繼承者的注意事項

在導出類別中覆 Fill(DataSet) 寫時,務必呼叫基底類別的方法 Fill(DataSet)

另請參閱

適用於

Fill(DataSet)

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

新增或刷新 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

A DataSet 用來填充記錄,必要時還要用結構。

傳回

成功新增或刷新的 DataSet列數。 這不包含那些不回傳列的語句所影響的列。

實作

備註

Fill 方法透過 SELECT 語句從資料來源擷取資料。 IDbConnection與 select 指令相關的物件必須是有效的,但不必是開啟的。 如果 IDbConnection 在被呼叫前 Fill 已封閉,則先開啟以取得資料,然後再關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

若在填充資料表時遇到錯誤或異常,錯誤發生前新增的列仍會保留在資料表中。 剩餘的行動被取消。

若指令未回傳任何列,則不會新增資料表至 DataSet,且不會提出例外。

如果 DbDataAdapter 物件在填充 一個 DataTable時遇到重複欄位,則會用「欄位名稱1」、「欄位名稱2」、「欄位名稱3」等模式產生後續欄位名稱。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet

當指定的查詢回傳多個結果時,每個回傳查詢的列的結果集會被放在獨立的表格中。 額外的結果集則會在指定的資料表名稱後加上整數值來命名(例如「Table」、「Table1」、「Table2」等)。 因為沒有回傳資料列的查詢會建立任何資料表,如果你處理一個插入查詢後接一個選擇查詢,為該選擇查詢建立的資料表會命名為「Table」,因為它是第一個建立的資料表。 如果你的應用程式使用欄位名和資料表名稱,請確保這些命名模式沒有衝突。

當用來填充 SELECT DataSet 陳述句時,回傳多個結果,例如批次 SQL 陳述句,若其中一個結果包含錯誤,後續所有結果都會被跳過,且不會被 DataSet加入 。

在使用後續 Fill 呼叫來刷新 DataSet的內容時,必須滿足兩個條件:

  1. SQL 陳述句應該與最初用來填充 DataSet.

  2. 必須包含 關鍵 欄位資訊。

若存在主鍵資訊,重複列會被調和,且只在對應 的 DataSetDataTable出現一次。 主鍵資訊可以透過 ,指定 PrimaryKey 的屬性DataTable來設定FillSchema,或將屬性設MissingSchemaActionAddWithKey

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

備註

當處理回傳多個結果的批次 SQL 語句時,.NET Framework 資料提供者用於 OLE DB 的實作 FillSchema 只會取得第一個結果的結構資訊。 要取得多個結果的結構資訊,請將 與 MissingSchemaAction 集合 一起使用FillAddWithKey

另請參閱

適用於

Fill(DataTable, IDbCommand, CommandBehavior)

來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs
來源:
DbDataAdapter.cs

使用 、 DataTableIDbCommandCommandBehavior和 ,新增或刷新 a DataTable 中的列以匹配資料來源中的列。

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

A DataTable 用來填充記錄,必要時還要用結構。

command
IDbCommand

SQL SELECT 陳述式用於從資料來源擷取資料列。

behavior
CommandBehavior

這是其中一項 CommandBehavior 價值。

傳回

成功新增或刷新的 DataTable列數。 這不包含那些不回傳列的語句所影響的列。

備註

Fill 方法透過相關 SelectCommand 屬性指定的 SELECT 語句,從資料來源擷取資料列。 與 SELECT 語句相關的連接物件必須有效,但不必是開啟的。 如果連線在呼叫前 Fill 已關閉,則會先開啟以取得資料,然後再關閉。 如果連線在被呼叫前 Fill 已開啟,連線則保持開啟狀態。

接著,操作 Fill 將這些列加入指定的目標 DataTable 物件 DataSet,若該物件尚未存在,則建立 DataTable 該物件。 建立 DataTable 物件時,操作 Fill 通常只會產生欄位名稱的元資料。 然而,若 MissingSchemaAction 屬性設定為 AddWithKey,也會建立適當的主鍵與約束。

DbDataAdapter 物件在填充 時 DataTable遇到重複欄位,會產生後續欄位名稱,模式為「欄位名稱1」、「欄位名稱2」、「欄位名稱3」等。 若輸入資料包含未命名欄位,則依照「Column1」、「Column2」等模式將它們置於 中 DataSet

該參數DataTable的過載Fill只得到第一個結果。 使用一個 的DataSet超載Fill作為參數,以獲得多個結果。

你可以在同一台DataTable機器上重複使用這個Fill方法。 若存在主鍵,輸入的列會與已存在的匹配列合併。 若不存在主鍵,則會將輸入的列附加在 DataTable

如果 傳SelectCommand回 OUTER JOIN 的結果,則 DataAdapter 不會為產生的 PrimaryKey設定DataTable值。 你必須明確定義主鍵,以確保重複列能正確解析。 如需詳細資訊,請參閱定義主索引鍵

備註

當處理回傳多個結果的批次 SQL 語句時,.NET Framework 資料提供者用於 OLE DB 的實作 FillSchema 只會取得第一個結果的結構資訊。 要取得多個結果的結構資訊,請將 與 MissingSchemaAction 集合 一起使用FillAddWithKey

給繼承者的注意事項

此方法的過載 Fill(DataSet) 受到保護,並設計供 .NET Framework 資料提供者使用。

另請參閱

適用於