-
Explication détaillée de C# DataSet et DataTable
2009-jeudi-21
1. Créez un objet DataSet :
DataSet ds = new DataSet("DataSetName");
2. Affichez la structure créée en appelant SqlDataAdapter.Fill
da.Fill(ds,"Commandes");
DataTable tbl = ds.Table[zéro];
foreach (colonne DataColumn dans tbl.Columns)
Console.WriteLine(col.ColumnName);
3. Afficher les données renvoyées par SqlDataAdapter ①, objet DataRow
DataTable tbl = ds.Table[zéro];
Ligne DataRow = tbl.Row[zéro];
Console.WriteLine(ros["OrderID"]);
②. Vérifiez les données stockées dans DataRow.
DataTable tbl = rangée.Table ;
foreach (colonne DataColumn dans tbl.Columns)
Console.WriteLine(ligne[col]);
③ Vérifiez l'objet DataRow dans DatTable.
foreach (ligne DataRow dans tbl.Rows)
DisplayRow(ligne);
4. Vérifiez les données dans le DataSet ① Vérifiez les propriétés du DataColumn : ReadOnly, AllowDBNull, MaxLength, Unique
② Contraint l'agrégation des objets DataTable : UiqueConstraints, Primarykey, ForeignkeyConstraints.
Normalement, il n'est pas nécessaire de créer des ForeignkeyConstraints, car une est créée lorsqu'une relation est créée entre deux objets DataTable dans un DataSet.
③ Utilisez la méthode SqlDataAdapter.Fill pour récupérer les informations sur la méthode.
5. Compilez du code pour créer des objets DataTable
① Créez un objet DataTable : DataTable tbl = new DataTable("TableName");
② Ajoutez le DataTable à la convergence Table de l'objet DataSet.
DataSetds = new DataSet();
DataTable tbl = new DataTable("Clients");
ds.Tables.Add(tbl);
DataSetds = new DataSet();
DataTable tbl = ds.Tables.Add("Clients");
Les objets DataTable ne peuvent exister que dans au plus un objet DataSet. Si vous souhaitez ajouter un DataTable à plusieurs DataSets, vous devez utiliser l'étape Copier ou l'étape Cloner. L'étape Copier crée un nouveau DataTable qui a la même structure que le DataTable d'origine et contient des lignes similaires ; l'étape Clone crée un nouveau DataTable qui a la même structure que le DataTable d'origine mais ne contient aucune ligne.
③.Ajoutez des colonnes à DataTable.
DataTable tbl = ds.Tables.Add("Commandes");
DataColumn col =tbl.Columns.Add("OrderID",typeof(int));
col.AllowDBNull = false;
col.MaxLength = cinq ;
col.Unique = true;
tbl.PrimaryKey = new DataColumn[]{tbl.Columns["CustomersID"]};
Lorsqu’une clé primaire doit être définie, AllowDBNull est automatiquement défini sur False ;
④. Supprimez les colonnes à incrémentation automatique.
DataSetds = new DataSet();
DataTable tbl = ds.Tables.Add("Commandes");
DataColumn col = tbl.Columns.Add("OrderID",typeof(int));
col.AutoIncrement = true;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = true;
⑤. Ajoutez des colonnes basées sur des expressions
tbl.Columns.Add("ItemTotal", typeof(Decimal),"Quantity*UnitPrice");
6. Modifier le contenu du DataTable ①, ajouter un nouveau DataRow
Ligne DataRow = ds.Tables["Clients"].NewRow();
rangée["IDClient"] = "ALFKI";
ds.Tables["Clients"].Rows.Add(ligne);
object[] aValues ={"ALFKI","Alfreds","Anders","030-22222"};
da.Tables["Clients"].LoadDataRow(aValues,false);
② La correction est actuellement en cours.
La modification du contenu d'une ligne ne modifie pas automatiquement le contenu correspondant dans la base de données. Les modifications apportées à la ligne sont considérées comme des modifications en attente qui seront ensuite transmises à la base de données à l'aide de l'objet SqlDataAdapter.
DataRow ligneClient ;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
si (ligneClient == null)
//Ne recherche pas de clients
autre
{
rowCustomer["CompanyName"] = "NewCompanyName";
rowCustomer["ContactName"] = "NouveauContactName";
}
//Il est recommandé d'utiliser ce formulaire
DataRow ligneClient ;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
si (ligneClient == null)
//Ne recherche pas de clients
autre
{
rowCustomer.BeginEdit();
rowCustomer["CompanyName"] = "NewCompanyName";
rowCustomer["ContactName"] = "NouveauContactName";
rowCustomer.EndEdit();
}
//null signifie ne pas modifier les données de cette colonne
obejct[] aCustomer ={null, "NewCompanyName", "NewContactName", null}
DataRow ligneClient ;
rowCustomer = ds.Tables["Clients"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer ;
③. Gérez la valeur nulle de DataRow.
//Vérifie s'il est vide
DataRow ligneClient ;
rowCustomer = ds.Tables["Clients"].Rows.Find("ALFKI");
if(rowCustomer.IsNull("Téléphone"))
Console.WriteLine("C'est Null");
autre
Console.WriteLine("Ce n'est pas Null");
// Accorder une valeur nulle
rowCustomer["Téléphone"] = DBNull.Value;
④. Éliminer DataRow
DataRow ligneClient ;
rowCustomer = ds.Tables["Clients"].Rows.Find("ALFKI");
rowCustomer.Delete();
⑤. Éliminer DataRow
DataRow rowCustomer = ds.Tables["Clients"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer ;
da.Tables["Clients"].Remove(rowCustomer);
peut-être
ds.Tables["Clients"].RemoveAt(intIndex);
⑥ Utilisez les propriétés DataRow.RowState : Inchangé, Détaché, Ajouté, Modifié, Supprimé.
vide privé DemonstrateRowState()
{ // Exécute une fonction pour créer un DataTable avec une colonne DataTable myTable = MakeTable DataRow myRow;
// Créez un nouveau DataRow. myRow = myTable.NewRow(); // Ligne détachée.WriteLine("New Row " + myRow.RowState);
maTable.Rows.Add(myRow); // Nouvelle ligne. Console.WriteLine("AddRow " + maRow.RowState);
myTable.AcceptChanges(); // Ligne inchangée. Console.WriteLine("AcceptChanges " + myRow.RowState);
myRow["FirstName"] = "Scott"; // Ligne modifiée. Console.WriteLine("Modified " + myRow.RowState);
myRow.Delete(); // Ligne supprimée. Console.WriteLine("Deleted " + myRow.RowState);
⑦. Vérifiez les modifications en attente dans DataRow.
DataRow ligneClient ;
rowCustomer = ds.Tables["Clients"].Rows.Find("ALFKI");
rowCustomer["CompanyName"] = "NewCompanyName";
chaîne strNewCompanyName, strOldCompanyName ;
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Current]);
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Original]);
1. Ensemble de données
①、Attributs
CaseSensitive : utilisé pour contrôler si les comparaisons de chaînes dans DataTable sont sensibles à la casse.
HAUT
Source de cet article :
Mon réseau anormal
JavaException
DotnetException
Oracle