-
Detaillierte Erläuterung von C# DataSet und DataTable
2009-Donnerstag-21
1. Erstellen Sie ein DataSet-Objekt:
DataSet ds = new DataSet("DataSetName");
2. Sehen Sie sich die Struktur an, die durch Aufrufen von SqlDataAdapter.Fill erstellt wurde
da.Fill(ds,"Orders");
DataTable tbl = ds.Table[zero];
foreach(DataColumn col in tbl.Columns)
Console.WriteLine(col.ColumnName);
3. Sehen Sie sich die vom SqlDataAdapter ①, DataRow-Objekt, zurückgegebenen Daten an
DataTable tbl = ds.Table[zero];
DataRow row = tbl.Row[zero];
Console.WriteLine(ros["OrderID"]);
②. Überprüfen Sie die in DataRow gespeicherten Daten
DataTable tbl = row.Table;
foreach(DataColumn col in tbl.Columns)
Console.WriteLine(row[col]);
③. Überprüfen Sie das DataRow-Objekt in DatTable
foreach(DataRow-Zeile in tbl.Rows)
DisplayRow(row);
4. Überprüfen Sie die Daten im DataSet ① Überprüfen Sie die Eigenschaften der DataColumn: ReadOnly, AllowDBNull, MaxLength, Unique
② Beschränkt die Aggregation von DataTable-Objekten: UiqueConstraints, Primarykey, ForeignkeyConstraints
Normalerweise besteht keine Notwendigkeit, sich die Mühe zu machen, ForeignkeyConstraints zu erstellen, da eines erstellt wird, wenn eine Beziehung zwischen zwei DataTable-Objekten in einem DataSet erstellt wird.
③. Verwenden Sie die Methode SqlDataAdapter.Fill, um Methodeninformationen abzurufen
5. Kompilieren Sie Code, um DataTable-Objekte zu erstellen
①. Erstellen Sie ein DataTable-Objekt: DataTable tbl = new DataTable("TableName");
② Fügen Sie die DataTable zur Tabellenkonvergenz des DataSet-Objekts hinzu
DataSet ds = new DataSet();
DataTable tbl = new DataTable("Customers");
ds.Tables.Add(tbl);
DataSet ds = new DataSet();
DataTable tbl = ds.Tables.Add("Customers");
DataTable-Objekte können höchstens in einem DataSet-Objekt vorhanden sein. Wenn Sie eine DataTable zu mehreren DataSets hinzufügen möchten, müssen Sie den Schritt „Kopieren“ oder „Klonen“ verwenden. Der Schritt „Kopieren“ erstellt eine neue Datentabelle, die dieselbe Struktur wie die ursprüngliche Datentabelle hat und ähnliche Zeilen enthält. Der Schritt „Klonen“ erstellt eine neue Datentabelle, die dieselbe Struktur wie die ursprüngliche Datentabelle hat, aber keine Zeilen enthält.
③. Spalten zur DataTable hinzufügen
DataTable tbl = ds.Tables.Add("Orders");
DataColumn col =tbl.Columns.Add("OrderID",typeof(int));
col.AllowDBNull = false;
col.MaxLength = five;
col.Unique = true;
tbl.PrimaryKey = new DataColumn[]{tbl.Columns["CustomersID"]};
Wenn ein Primärschlüssel festgelegt werden soll, wird AllowDBNull automatisch auf False gesetzt;
④ Entsorgen Sie automatische Inkrementierungsspalten
DataSet ds = new DataSet();
DataTable tbl = ds.Tables.Add("Orders");
DataColumn col = tbl.Columns.Add("OrderID",typeof(int));
col.AutoIncrement = true;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = true;
⑤. Fügen Sie Spalten basierend auf Ausdrücken hinzu
tbl.Columns.Add("ItemTotal",typeof(Decimal),"Quantity*UnitPrice");
6. Ändern Sie den Inhalt der Datentabelle ① und fügen Sie eine neue Datenzeile hinzu
DataRow row = ds.Tables["Customers"].NewRow();
row["CustomerID"] = "ALFKI";
ds.Tables["Kunden"].Rows.Add(row);
object[] aValues ={"ALFKI","Alfreds","Anders","030-22222"};
da.Tables["Customers"].LoadDataRow(aValues,false);
② Die Korrektur wird derzeit durchgeführt
Durch das Ändern des Inhalts einer Zeile wird nicht automatisch der entsprechende Inhalt in der Datenbank geändert. Änderungen an der Zeile gelten als ausstehende Änderungen, die später mithilfe des SqlDataAdapter-Objekts an die Datenbank übermittelt werden.
DataRow rowCustomer;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
if(rowCustomer == null)
//Keine Suche nach Kunden
anders
{
rowCustomer["CompanyName"] = "NewCompanyName";
rowCustomer["ContactName"] = "NewContactName";
}
//Empfohlen, dieses Formular zu verwenden
DataRow rowCustomer;
rowCustomer = ds.Tables["Custoemrs"].Rows.Find("ANTON");
if(rowCustomer == null)
//Keine Suche nach Kunden
anders
{
rowCustomer.BeginEdit();
rowCustomer["CompanyName"] = "NewCompanyName";
rowCustomer["ContactName"] = "NewContactName";
rowCustomer.EndEdit();
}
//null bedeutet, dass die Daten in dieser Spalte nicht geändert werden
obejct[] aCustomer ={null, „NewCompanyName“, „NewContactName“, null}
DataRow rowCustomer;
rowCustomer = ds.Tables["Customers"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer;
③ Behandeln Sie den Nullwert von DataRow
//Überprüfen Sie, ob es leer ist
DataRow rowCustomer;
rowCustomer = ds.Tables["Customers"].Rows.Find("ALFKI");
if(rowCustomer.IsNull("Phone"))
Console.WriteLine("Es ist Null");
anders
Console.WriteLine("Es ist nicht Null");
//Nullwert gewähren
rowCustomer["Phone"] = DBNull.Value;
④. Beseitigen Sie DataRow
DataRow rowCustomer;
rowCustomer = ds.Tables["Customers"].Rows.Find("ALFKI");
rowCustomer.Delete();
⑤. Beseitigen Sie DataRow
DataRow rowCustomer = ds.Tables["Customers"].Rows.Find("ALFKI");
rowCustomer.ItemArray = aCustomer;
da.Tables["Customers"].Remove(rowCustomer);
vielleicht
ds.Tables["Kunden"].RemoveAt(intIndex);
⑥. Verwenden Sie die DataRow.RowState-Eigenschaften: Unverändert, Getrennt, Hinzugefügt, Geändert, Gelöscht
private void DemonstrateRowState()
{ // Führen Sie eine Funktion aus, um eine DataTable mit einer Spalte zu erstellen. DataTable = MakeTable();
// Eine neue DataRow erstellen. myRow = myTable.NewRow(); // Abgetrennte Zeile.
myTable.Rows.Add(myRow); // Neue Zeile. Console.WriteLine("AddRow " + myRow.RowState);
myTable.AcceptChanges(); // Unveränderte Zeile. Console.WriteLine("AcceptChanges " + myRow.RowState);
myRow["FirstName"] = "Scott"; // Geänderte Zeile. Console.WriteLine("Modified " + myRow.RowState);
myRow.Delete(); // Gelöschte Zeile. Console.WriteLine("Deleted " + myRow.RowState);
⑦ Überprüfen Sie die ausstehenden Änderungen in DataRow
DataRow rowCustomer;
rowCustomer = ds.Tables["Customers"].Rows.Find("ALFKI");
rowCustomer["CompanyName"] = "NewCompanyName";
string strNewCompanyName, strOldCompanyName;
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Current]);
Console.WriteLine(rowCustomer["CompanyName", DataRowVersion.Original]);
1. Datensatz
①、Attribute
CaseSensitive: Wird verwendet, um zu steuern, ob bei Zeichenfolgenvergleichen in DataTable die Groß-/Kleinschreibung beachtet wird.
SPITZE
Quelle dieses Artikels:
Mein abnormales Netzwerk
JavaException
DotnetException
Orakel