Rappresenta una tabella di dati in memoria.
System.ComponentModel.MarshalByValueComponent
System.Data.DataTable
System.Data.TypedTableBase<T>
Spazio dei nomi: System.Data
Assembly: System.Data (in System.Data.dll)
<SerializableAttribute> _ Public Class DataTable _ Inherits MarshalByValueComponent _ Implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, _ IXmlSerializable
[SerializableAttribute] public class DataTable : MarshalByValueComponent, IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
[SerializableAttribute] public ref class DataTable : public MarshalByValueComponent, IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
[<SerializableAttribute>] type DataTable = class inherit MarshalByValueComponent interface IListSource interface ISupportInitializeNotification interface ISupportInitialize interface ISerializable interface IXmlSerializable end
Il tipo DataTable espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
DataTable() | Inizializza una nuova istanza della classe DataTable senza argomenti. |
|
DataTable(String) | Inizializza una nuova istanza della classe DataTable con il nome della tabella specificato. |
|
DataTable(SerializationInfo, StreamingContext) | Inizializza una nuova istanza della classe DataTable con gli oggetti SerializationInfo e StreamingContext. |
|
DataTable(String, String) | Inizializza una nuova istanza della classe DataTable con il nome della tabella e lo spazio dei nomi specificati. |
| Nome | Descrizione | |
|---|---|---|
|
CaseSensitive | Indica se i confronti tra stringhe all'interno della tabella prendono in considerazione la distinzione tra maiuscole e minuscole. |
|
ChildRelations | Ottiene l'insieme di relazioni figlio per l'oggetto DataTable. |
|
Columns | Ottiene l'insieme di colonne che appartengono a questa tabella. |
|
Constraints | Ottiene l'insieme di vincoli mantenuti da questa tabella. |
|
Container | Ottiene il contenitore del componente. (Ereditato da MarshalByValueComponent) |
|
DataSet | Ottiene la classe DataSet a cui la tabella appartiene. |
|
DefaultView | Ottiene una visualizzazione personalizzata della tabella che può comprendere una visualizzazione filtrata o la posizione del cursore. |
|
DesignMode | Ottiene un valore che indica se il componente è in modalità progettazione. (Ereditato da MarshalByValueComponent) |
|
DisplayExpression | Ottiene o imposta l'espressione che restituisce un valore utilizzato per rappresentare questa tabella nell'interfaccia utente. La proprietà DisplayExpression consente di visualizzare il nome di questa tabella in un'interfaccia utente. |
|
Events | Ottiene l'elenco dei gestori eventi allegati a questo componente. (Ereditato da MarshalByValueComponent) |
|
ExtendedProperties | Ottiene l'insieme di informazioni utente personalizzate. |
|
HasErrors | Ottiene un valore che indica se sono presenti errori nelle righe delle tabelle dell'oggetto DataSet al quale la tabella appartiene. |
|
IsInitialized | Ottiene un valore che indica se la classe DataTable è inizializzata. |
|
Locale | Ottiene o imposta le informazioni sulle impostazioni locali utilizzate per confrontare stringhe all'interno della tabella. |
|
MinimumCapacity | Ottiene o imposta la dimensione iniziale di questa tabella. |
|
Namespace | Ottiene o imposta lo spazio dei nomi per la rappresentazione XML dei dati memorizzati nella classe DataTable. |
|
ParentRelations | Ottiene l'insieme di relazioni padre dell'oggetto DataTable. |
|
Prefix | Ottiene o imposta lo spazio dei nomi per la rappresentazione XML dei dati memorizzati nella classe DataTable. |
|
PrimaryKey | Ottiene o imposta una matrice di colonne che agiscono da chiavi primarie della tabella di dati. |
|
RemotingFormat | Ottiene o imposta il formato di serializzazione. |
|
Rows | Ottiene l'insieme di righe che appartengono a questa tabella. |
|
Site | Ottiene o imposta un'interfaccia System.ComponentModel.ISite per la classe DataTable. (Esegue l'override di MarshalByValueComponent.Site). |
|
TableName | Ottiene o imposta il nome della classe DataTable. |
| Nome | Descrizione | |
|---|---|---|
|
AcceptChanges | Convalida tutte le modifiche apportate a questa tabella sin dall'ultima chiamata al metodo AcceptChanges. |
|
BeginInit | Avvia l'inizializzazione di una classe DataTable utilizzata su un form o da un altro componente. L'inizializzazione avviene in fase di esecuzione. |
|
BeginLoadData | Disattiva le notifiche, la manutenzione degli indici e i vincoli durante il caricamento dei dati. |
|
Clear | Cancella tutti i dati dell'oggetto DataTable. |
|
Clone | Duplica la struttura dell'oggetto DataTable, tra cui tutti gli schemi e i vincoli dell'oggetto DataTable. |
|
Compute | Calcola l'espressione specificata sulle righe correnti che soddisfano i criteri di filtro. |
|
Copy | Copia la struttura e i dati per questa classe DataTable. |
|
CreateDataReader | Restituisce una classe DataTableReader corrispondente ai dati all'interno di questa classe DataTable. |
|
CreateInstance | Infrastruttura. Crea una nuova istanza di DataTable. |
|
Dispose() | Libera tutte le risorse utilizzate da MarshalByValueComponent. (Ereditato da MarshalByValueComponent) |
|
Dispose(Boolean) | Rilascia le risorse non gestite utilizzate dall'oggetto MarshalByValueComponent ed eventualmente rilascia le risorse gestite. (Ereditato da MarshalByValueComponent) |
|
EndInit | Termina l'inizializzazione di un oggetto DataTable utilizzato in un modulo o da un altro componente. L'inizializzazione avviene in fase di esecuzione. |
|
EndLoadData | Attiva le notifiche, la manutenzione degli indici e i vincoli dopo il caricamento dei dati. |
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da MarshalByValueComponent) |
|
GetChanges() | Ottiene una copia della classe DataTable contenente tutte le modifiche apportate a essa dal momento in cui è stata caricata o dall'ultima chiamata al metodo AcceptChanges. |
|
GetChanges(DataRowState) | Ottiene una copia della classe DataTable contenente tutte le modifiche apportate a essa dal momento in cui è stata caricata o dall'ultima chiamata al metodo AcceptChanges, filtrata dall'enumerazione DataRowState. |
|
GetDataTableSchema | Questo metodo restituisce un'istanza XmlSchemaSet contenente il linguaggio WDSL (Web Services Description Language) che descrive la classe DataTable per i servizi Web. |
|
GetErrors | Ottiene una matrice di oggetti DataRow che contengono errori. |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetObjectData | Popola un oggetto delle informazioni di serializzazione coi dati richiesti per serializzare DataTable. |
|
GetRowType | Infrastruttura. Ottiene il tipo della riga. |
|
GetSchema | Infrastruttura. Per una descrizione di questo membro, vedere IXmlSerializable.GetSchema. |
|
GetService | Ottiene l'implementatore dell'interfaccia IServiceProvider. (Ereditato da MarshalByValueComponent) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
ImportRow | Copia un oggetto DataRow in un oggetto DataTable, conservando sia le impostazioni delle proprietà sia i valori originali e correnti. |
|
Load(IDataReader) | Riempie una classe DataTable con valori di un'origine dati utilizzando l'interfaccia IDataReader fornita. Se DataTable contiene già righe, i dati in arrivo dall'origine dati vengono uniti alle righe esistenti. |
|
Load(IDataReader, LoadOption) | Riempie una classe DataTable con valori di un'origine dati utilizzando l'interfaccia IDataReader fornita. Se DataTable contiene già righe, i dati in arrivo dall'origine dati vengono uniti alle righe esistenti, in base al valore del parametro loadOption. |
|
Load(IDataReader, LoadOption, FillErrorEventHandler) | Riempie una classe DataTable con valori di un'origine dati utilizzando l'interfaccia IDataReader fornita, tramite un delegato di gestione degli errori. |
|
LoadDataRow(Object[], Boolean) | Rileva e aggiorna una riga specifica. Se non viene trovata una riga corrispondente, viene creata una nuova riga utilizzando i valori dati. |
|
LoadDataRow(Object[], LoadOption) | Rileva e aggiorna una riga specifica. Se non viene trovata una riga corrispondente, viene creata una nuova riga utilizzando i valori dati. |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
Merge(DataTable) | Unire la classe DataTable specificata alla classe DataTable corrente. |
|
Merge(DataTable, Boolean) | Unire la classe DataTable specificata alla classe DataTable corrente, indicando se conservare le modifiche nella classe DataTable corrente. |
|
Merge(DataTable, Boolean, MissingSchemaAction) | Unire la classe DataTable specificata alla classe DataTable corrente, indicando se conservare le modifiche e come gestire lo schema mancante nella classe DataTable corrente. |
|
NewRow | Crea un nuovo oggetto DataRow con lo stesso schema della tabella. |
|
NewRowArray | Infrastruttura. Restituisce una matrice di DataRow. |
|
NewRowFromBuilder | Crea una nuova riga da una riga esistente. |
|
OnColumnChanged | Genera l'evento ColumnChanged. |
|
OnColumnChanging | Genera l'evento ColumnChanging. |
|
OnPropertyChanging | Genera l'evento PropertyChanged. |
|
OnRemoveColumn | Notifica all'oggetto DataTable che è in corso l'eliminazione di un oggetto DataColumn. |
|
OnRowChanged | Genera l'evento RowChanged. |
|
OnRowChanging | Genera l'evento RowChanging. |
|
OnRowDeleted | Genera l'evento RowDeleted. |
|
OnRowDeleting | Genera l'evento RowDeleting. |
|
OnTableCleared | Genera l'evento TableCleared. |
|
OnTableClearing | Genera l'evento TableClearing. |
|
OnTableNewRow | Genera l'evento TableNewRow. |
|
ReadXml(Stream) | Legge i dati e lo schema XML nella classe DataTable utilizzando la classe Stream specificata. |
|
ReadXml(String) | Legge i dati e lo schema XML nella classe DataTable dal file specificato. |
|
ReadXml(TextReader) | Legge dati e XML Schema nell'oggetto DataTable utilizzando l'oggetto TextReader specificato. |
|
ReadXml(XmlReader) | Legge i dati e lo schema XML nell'oggetto DataTable utilizzando l'oggetto XmlReader specificato. |
|
ReadXmlSchema(Stream) | Legge uno schema XML nella classe DataTable, utilizzando il flusso specificato. |
|
ReadXmlSchema(String) | Legge uno schema XML nella classe DataTable dal file specificato. |
|
ReadXmlSchema(TextReader) | Legge uno schema XML nella classe DataTable, utilizzando la classe TextReader specificata. |
|
ReadXmlSchema(XmlReader) | Legge uno schema XML nella classe DataTable, utilizzando la classe XmlReader specificata. |
|
ReadXmlSerializable | Infrastruttura. Legge da un flusso XML. |
|
RejectChanges | Annulla tutte le modifiche apportate alla tabella dal momento in cui è stata caricata oppure dall'ultima volta in cui è stato chiamato il metodo AcceptChanges. |
|
Reset | Ripristina lo stato originale della classe DataTable. |
|
Select() | Ottiene una matrice di tutti gli oggetti DataRow. |
|
Select(String) | Ottiene una matrice di tutti gli oggetti DataRow che soddisfano i criteri di filtro. |
|
Select(String, String) | Ottiene una matrice di tutti gli oggetti DataRow che soddisfano i criteri di filtro, in base al criterio di ordinamento specificato. |
|
Select(String, String, DataViewRowState) | Ottiene una matrice di tutti gli oggetti DataRow che corrispondono al filtro in base all'ordinamento specificato e che corrispondono allo stato specificato. |
|
ToString | Ottiene le proprietà TableName e DisplayExpression se ne esiste una come stringa concatenata. (Esegue l'override di MarshalByValueComponent.ToString()). |
|
WriteXml(Stream) | Scrive i contenuti correnti della classe DataTable come XML tramite la classe Stream specificata. |
|
WriteXml(String) | Scrive i contenuti correnti della classe DataTable come XML tramite il file specificato. |
|
WriteXml(TextWriter) | Scrive i contenuti correnti di DataTable come XML utilizzando l'oggetto TextWriter specificato. |
|
WriteXml(XmlWriter) | Scrive i contenuti correnti di DataTable come XML utilizzando l'oggetto XmlWriter specificato. |
|
WriteXml(Stream, Boolean) | Scrive i contenuti correnti della classe DataTable come XML tramite la classe Stream specificata. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXml(Stream, XmlWriteMode) | Scrive i dati correnti e, facoltativamente, lo schema per l'oggetto DataTable nel file specificato utilizzando l'oggetto XmlWriteMode specificato. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. |
|
WriteXml(String, Boolean) | Scrive i contenuti correnti della classe DataTable come XML tramite il file specificato. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXml(String, XmlWriteMode) | Scrive i dati correnti e, facoltativamente, lo schema per la classe DataTable utilizzando il file specificato e l'enumerazione XmlWriteMode. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. |
|
WriteXml(TextWriter, Boolean) | Scrive i contenuti correnti di DataTable come XML utilizzando l'oggetto TextWriter specificato. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXml(TextWriter, XmlWriteMode) | Scrive i dati correnti e, facoltativamente, lo schema per l'oggetto DataTable utilizzando l'oggetto TextWriter e l'oggetto XmlWriteMode specificati. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. |
|
WriteXml(XmlWriter, Boolean) | Scrive i contenuti correnti di DataTable come XML utilizzando l'oggetto XmlWriter specificato. |
|
WriteXml(XmlWriter, XmlWriteMode) | Scrive i dati correnti e, facoltativamente, lo schema per l'oggetto DataTable utilizzando l'oggetto XmlWriter e l'oggetto XmlWriteMode specificati. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. |
|
WriteXml(Stream, XmlWriteMode, Boolean) | Scrive i dati correnti e, facoltativamente, lo schema per l'oggetto DataTable nel file specificato utilizzando l'oggetto XmlWriteMode specificato. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXml(String, XmlWriteMode, Boolean) | Scrive i dati correnti e, facoltativamente, lo schema per la classe DataTable utilizzando il file specificato e l'enumerazione XmlWriteMode. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXml(TextWriter, XmlWriteMode, Boolean) | Scrive i dati correnti e, facoltativamente, lo schema per l'oggetto DataTable utilizzando l'oggetto TextWriter e l'oggetto XmlWriteMode specificati. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXml(XmlWriter, XmlWriteMode, Boolean) | Scrive i dati correnti e, facoltativamente, lo schema per l'oggetto DataTable utilizzando l'oggetto XmlWriter e l'oggetto XmlWriteMode specificati. Per scrivere lo schema, impostare il valore del parametro mode su WriteSchema. Per salvare i dati per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXmlSchema(Stream) | Scrive la struttura dei dati correnti della classe DataTable come schema XML nel flusso specificato. |
|
WriteXmlSchema(String) | Scrive la struttura dei dati correnti della classe DataTable come schema XML nel file specificato. |
|
WriteXmlSchema(TextWriter) | Scrive la struttura dei dati correnti della classe DataTable come schema XML utilizzando la classe TextWriter specificata. |
|
WriteXmlSchema(XmlWriter) | Scrive la struttura dei dati correnti della classe DataTable come schema XML utilizzando la classe XmlWriter specificata. |
|
WriteXmlSchema(Stream, Boolean) | Scrive la struttura dei dati correnti della classe DataTable come schema XML nel flusso specificato. Per salvare lo schema per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXmlSchema(String, Boolean) | Scrive la struttura dei dati correnti della classe DataTable come schema XML nel file specificato. Per salvare lo schema per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXmlSchema(TextWriter, Boolean) | Scrive la struttura dei dati correnti della classe DataTable come schema XML utilizzando la classe TextWriter specificata. Per salvare lo schema per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
|
WriteXmlSchema(XmlWriter, Boolean) | Scrive la struttura dei dati correnti della classe DataTable come schema XML utilizzando la classe XmlWriter specificata. Per salvare lo schema per la tabella e i relativi discendenti, impostare il parametro writeHierarchy su true. |
| Nome | Descrizione | |
|---|---|---|
|
ColumnChanged | Viene generato una volta modificato il valore per l'oggetto DataColumn specificato in un oggetto DataRow. |
|
ColumnChanging | Viene generato quando è in corso la modifica di un valore per l'oggetto DataColumn specificato in un oggetto DataRow. |
|
Disposed | Aggiunge un gestore eventi per restare in attesa dell'evento Disposed sul componente. (Ereditato da MarshalByValueComponent) |
|
Initialized | Si verifica dopo l'inizializzazione dell'oggetto DataTable. |
|
RowChanged | Viene generato una volta che è stata modificata correttamente una classe DataRow. |
|
RowChanging | Viene generato durante la modifica di un oggetto DataRow. |
|
RowDeleted | Viene generato dopo l'eliminazione di una riga nella tabella. |
|
RowDeleting | Viene generato prima dell'eliminazione di una riga nella tabella. |
|
TableCleared | Si verifica dopo che un oggetto DataTable viene cancellato. |
|
TableClearing | Si verifica se un oggetto DataTable viene cancellato. |
|
TableNewRow | Si verifica quando viene inserito un nuovo oggetto DataRow. |
| Nome | Descrizione | |
|---|---|---|
|
AsDataView | Crea e restituisce un oggetto DataView che supporta LINQ. (Definito da DataTableExtensions). |
|
AsEnumerable | Restituisce un oggetto IEnumerable<T>, in cui il parametro generico T è DataRow. Questo oggetto può essere utilizzato in una query di metodo o espressione LINQ. (Definito da DataTableExtensions). |
| Nome | Descrizione | |
|---|---|---|
|
fInitInProgress | Infrastruttura. Controlla se l'inizializzazione è in corso. L'inizializzazione avviene in fase di esecuzione. |
| Nome | Descrizione | |
|---|---|---|
|
IListSource.ContainsListCollection | Per una descrizione di questo membro, vedere IListSource.ContainsListCollection. |
|
IListSource.GetList | Per una descrizione di questo membro, vedere IListSource.GetList. |
|
IXmlSerializable.GetSchema | Per una descrizione di questo membro, vedere il metodo IXmlSerializable.GetSchema. |
|
IXmlSerializable.ReadXml | Per una descrizione di questo membro, vedere IXmlSerializable.ReadXml. |
|
IXmlSerializable.WriteXml | Per una descrizione di questo membro, vedere IXmlSerializable.WriteXml. |
DataTable rappresenta un oggetto fondamentale nella libreria di ADO.NET. Tra gli altri oggetti che utilizzano DataTable sono inclusi l'oggetto DataSet e l'oggetto DataView.
Quando si accede agli oggetti DataTable, è opportuno ricordare che tali oggetti prevedono la distinzione tra maiuscole e minuscole in modo condizionale. Se ad esempio un oggetto DataTable viene denominato "mydatatable" e un altro viene denominato "Mydatatable", alla stringa utilizzata per eseguire la ricerca di una delle tabelle verrà applicata la distinzione tra maiuscole e minuscole. Se tuttavia esiste soltanto "mydatatable" e non "Mydatatable", alla stringa di ricerca non verrà applicata alcuna distinzione tra maiuscole e minuscole. Una classe DataSet è in grado di contenere due oggetti DataTable con lo stesso valore della proprietà TableName, ma con valori diversi per quanto riguarda la proprietà Namespace. Per ulteriori informazioni sull'utilizzo degli oggetti DataTable, vedere Creazione di una DataTable (ADO.NET).
Se si crea un oggetto DataTable a livello di codice, sarà necessario definirne dapprima lo schema aggiungendo oggetti DataColumn all'insieme DataColumnCollection (a cui si accede tramite la proprietà Columns). Per ulteriori informazioni sull'aggiunta di oggetti DataColumn, vedere Aggiunta di colonne a un DataTable (ADO.NET).
Per aggiungere righe a un oggetto DataTable, è necessario utilizzare innanzitutto il metodo NewRow per restituire un nuovo oggetto DataRow. Il metodo NewRow restituisce una riga con lo schema dell'oggetto DataTable, come definito dall'insieme DataColumnCollection della tabella. Il numero massimo di righe che è possibile archiviare in una classe DataTable è 16.777.216. Per ulteriori informazioni, vedere Aggiunta di dati a una DataTable.
L'oggetto DataTable contiene inoltre un insieme di oggetti Constraint che possono essere utilizzati per garantire l'integrità dei dati. Per ulteriori informazioni, vedere Vincoli di DataTable (ADO.NET).
Sono disponibili numerosi eventi DataTable utilizzabili per determinare quando vengono apportate modifiche a una tabella. tra cui RowChanged, RowChanging, RowDeleting e RowDeleted. Per ulteriori informazioni sugli eventi utilizzabili con una classe DataTable, vedere Gestione degli eventi di DataTable (ADO.NET).
Quando viene creata un'istanza di DataTable, alcune proprietà di lettura/scrittura vengono impostate sui valori iniziali. Per un elenco di questi valori, vedere l'argomento sul costruttore DataTable.DataTable.
Nota
|
|---|
|
Gli oggetti DataSet e DataTable ereditano dalla classe MarshalByValueComponent e supportano l'interfaccia ISerializable per l'esecuzione in remoto di .NET Framework. Si tratta degli unici oggetti ADO.NET che possono essere utilizzati per l'esecuzione in remoto di .NET Framework. |
Nell'esempio seguente vengono creati due oggetti DataTable e un oggetto DataRelation, quindi i nuovi oggetti vengono aggiunti a un oggetto DataSet. Le tabelle vengono quindi visualizzate in un controllo DataGridView.
' Put the next line into the Declarations section. private dataSet As DataSet Private Sub MakeDataTables() ' Run all of the functions. MakeParentTable() MakeChildTable() MakeDataRelation() BindToDataGrid() End Sub Private Sub MakeParentTable() ' Create a new DataTable. Dim table As DataTable = new DataTable("ParentTable") ' Declare variables for DataColumn and DataRow objects. Dim column As DataColumn Dim row As DataRow ' Create new DataColumn, set DataType, ColumnName ' and add to DataTable. column = New DataColumn() column.DataType = System.Type.GetType("System.Int32") column.ColumnName = "id" column.ReadOnly = True column.Unique = True ' Add the Column to the DataColumnCollection. table.Columns.Add(column) ' Create second column. column = New DataColumn() column.DataType = System.Type.GetType("System.String") column.ColumnName = "ParentItem" column.AutoIncrement = False column.Caption = "ParentItem" column.ReadOnly = False column.Unique = False ' Add the column to the table. table.Columns.Add(column) ' Make the ID column the primary key column. Dim PrimaryKeyColumns(0) As DataColumn PrimaryKeyColumns(0)= table.Columns("id") table.PrimaryKey = PrimaryKeyColumns ' Instantiate the DataSet variable. dataSet = New DataSet() ' Add the new DataTable to the DataSet. dataSet.Tables.Add(table) ' Create three new DataRow objects and add ' them to the DataTable Dim i As Integer For i = 0 to 2 row = table.NewRow() row("id") = i row("ParentItem") = "ParentItem " + i.ToString() table.Rows.Add(row) Next i End Sub Private Sub MakeChildTable() ' Create a new DataTable. Dim table As DataTable = New DataTable("childTable") Dim column As DataColumn Dim row As DataRow ' Create first column and add to the DataTable. column = New DataColumn() column.DataType= System.Type.GetType("System.Int32") column.ColumnName = "ChildID" column.AutoIncrement = True column.Caption = "ID" column.ReadOnly = True column.Unique = True ' Add the column to the DataColumnCollection. table.Columns.Add(column) ' Create second column. column = New DataColumn() column.DataType= System.Type.GetType("System.String") column.ColumnName = "ChildItem" column.AutoIncrement = False column.Caption = "ChildItem" column.ReadOnly = False column.Unique = False table.Columns.Add(column) ' Create third column. column = New DataColumn() column.DataType= System.Type.GetType("System.Int32") column.ColumnName = "ParentID" column.AutoIncrement = False column.Caption = "ParentID" column.ReadOnly = False column.Unique = False table.Columns.Add(column) dataSet.Tables.Add(table) ' Create three sets of DataRow objects, five rows each, ' and add to DataTable. Dim i As Integer For i = 0 to 4 row = table.NewRow() row("childID") = i row("ChildItem") = "Item " + i.ToString() row("ParentID") = 0 table.Rows.Add(row) Next i For i = 0 to 4 row = table.NewRow() row("childID") = i + 5 row("ChildItem") = "Item " + i.ToString() row("ParentID") = 1 table.Rows.Add(row) Next i For i = 0 to 4 row = table.NewRow() row("childID") = i + 10 row("ChildItem") = "Item " + i.ToString() row("ParentID") = 2 table.Rows.Add(row) Next i End Sub Private Sub MakeDataRelation() ' DataRelation requires two DataColumn ' (parent and child) and a name. Dim parentColumn As DataColumn = _ dataSet.Tables("ParentTable").Columns("id") Dim childColumn As DataColumn = _ dataSet.Tables("ChildTable").Columns("ParentID") Dim relation As DataRelation = new _ DataRelation("parent2Child", parentColumn, childColumn) dataSet.Tables("ChildTable").ParentRelations.Add(relation) End Sub Private Sub BindToDataGrid() ' Instruct the DataGrid to bind to the DataSet, with the ' ParentTable as the topmost DataTable. DataGrid1.SetDataBinding(dataSet,"ParentTable") End Sub
// Put the next line into the Declarations section. private System.Data.DataSet dataSet; private void MakeDataTables() { // Run all of the functions. MakeParentTable(); MakeChildTable(); MakeDataRelation(); BindToDataGrid(); } private void MakeParentTable() { // Create a new DataTable. System.Data.DataTable table = new DataTable("ParentTable"); // Declare variables for DataColumn and DataRow objects. DataColumn column; DataRow row; // Create new DataColumn, set DataType, // ColumnName and add to DataTable. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "id"; column.ReadOnly = true; column.Unique = true; // Add the Column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "ParentItem"; column.AutoIncrement = false; column.Caption = "ParentItem"; column.ReadOnly = false; column.Unique = false; // Add the column to the table. table.Columns.Add(column); // Make the ID column the primary key column. DataColumn[] PrimaryKeyColumns = new DataColumn[1]; PrimaryKeyColumns[0] = table.Columns["id"]; table.PrimaryKey = PrimaryKeyColumns; // Instantiate the DataSet variable. dataSet = new DataSet(); // Add the new DataTable to the DataSet. dataSet.Tables.Add(table); // Create three new DataRow objects and add // them to the DataTable for (int i = 0; i<= 2; i++) { row = table.NewRow(); row["id"] = i; row["ParentItem"] = "ParentItem " + i; table.Rows.Add(row); } } private void MakeChildTable() { // Create a new DataTable. DataTable table = new DataTable("childTable"); DataColumn column; DataRow row; // Create first column and add to the DataTable. column = new DataColumn(); column.DataType= System.Type.GetType("System.Int32"); column.ColumnName = "ChildID"; column.AutoIncrement = true; column.Caption = "ID"; column.ReadOnly = true; column.Unique = true; // Add the column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType= System.Type.GetType("System.String"); column.ColumnName = "ChildItem"; column.AutoIncrement = false; column.Caption = "ChildItem"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); // Create third column. column = new DataColumn(); column.DataType= System.Type.GetType("System.Int32"); column.ColumnName = "ParentID"; column.AutoIncrement = false; column.Caption = "ParentID"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); dataSet.Tables.Add(table); // Create three sets of DataRow objects, // five rows each, and add to DataTable. for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i; row["ChildItem"] = "Item " + i; row["ParentID"] = 0 ; table.Rows.Add(row); } for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i + 5; row["ChildItem"] = "Item " + i; row["ParentID"] = 1 ; table.Rows.Add(row); } for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i + 10; row["ChildItem"] = "Item " + i; row["ParentID"] = 2 ; table.Rows.Add(row); } } private void MakeDataRelation() { // DataRelation requires two DataColumn // (parent and child) and a name. DataColumn parentColumn = dataSet.Tables["ParentTable"].Columns["id"]; DataColumn childColumn = dataSet.Tables["ChildTable"].Columns["ParentID"]; DataRelation relation = new DataRelation("parent2Child", parentColumn, childColumn); dataSet.Tables["ChildTable"].ParentRelations.Add(relation); } private void BindToDataGrid() { // Instruct the DataGrid to bind to the DataSet, with the // ParentTable as the topmost DataTable. dataGrid1.SetDataBinding(dataSet,"ParentTable"); }
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Questo tipo può essere utilizzato nelle operazioni di lettura con multithreading. È necessario sincronizzare tutte le operazioni di scrittura.
Nota