Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Klassen DataSet och relaterade klasser är äldre .NET Framework-tekniker från början av 2000-talet som gör det möjligt för program att arbeta med data i minnet medan apparna kopplas från databasen. Teknikerna är särskilt användbara för appar som gör det möjligt för användare att ändra data och spara ändringarna tillbaka till databasen. Även om datauppsättningar är en bevisad framgångsrik teknik är den rekommenderade metoden för nya .NET-program att använda Entity Framework Core. Entity Framework är ett mer naturligt sätt att arbeta med tabelldata som objektmodeller och har ett enklare programmeringsgränssnitt.
Den här artikeln beskriver hur du frågar efter och redigerar data i tabeller i .NET Framework datauppsättningar. Du kan redigera data i datatabeller på ungefär samma sätt som du redigerar tabeller i vilken databas som helst. Du kan infoga, uppdatera och ta bort poster i tabellen. I ett databundet formulär kan du ange vilka fält som kan redigeras av användaren.
I dessa fall hanterar infrastrukturen för databindning all ändringsspårning så att ändringarna kan skickas tillbaka till databasen. Om du redigerar data programmatiskt och vill skicka tillbaka ändringarna till databasen måste du använda objekt och metoder som utför ändringsspårningen.
Förutom att ändra faktiska data kan du också fråga a DataTable för att returnera specifika rader med data. Du kan till exempel fråga efter enskilda rader, ursprungliga eller föreslagna versioner av rader, rader som har ändrats eller rader som innehåller fel.
Förutsättningar
Om du vill använda Visual Studio för att fråga och redigera data i .NET Framework datauppsättningar behöver du:
- .NET Desktop-utvecklings- och datalagrings- och bearbetningsarbetsbelastningar installerade i Visual Studio. Mer information finns i Ändra Visual Studio.
- Ett C#- eller Visual Basic (VB) .NET Framework projekt har skapats.
- En datauppsättning som skapats från en SQL Server Express LocalDB-databas .
Redigera rader i en datauppsättning
Om du vill redigera en befintlig rad i en DataTablemåste du leta reda på den DataRow du vill redigera och sedan tilldela de uppdaterade värdena till önskade kolumner.
Om du inte känner till indexet för den rad som du vill redigera använder FindBy du metoden för att söka efter primärnyckeln.
NorthwindDataSet.CustomersRow customersRow =
northwindDataSet1.Customers.FindByCustomerID("ALFKI");
customersRow.CompanyName = "Updated Company Name";
customersRow.City = "Seattle";
När du känner till radindexet kan du använda det för att komma åt och redigera raden.
northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
northwindDataSet1.Customers[4].City = "Seattle";
Infoga nya rader i en datauppsättning
Program som använder databundna kontroller lägger vanligtvis till nya poster med hjälp av knappen Lägg till ny på en BindingNavigator kontroll.
Du kan också lägga till en ny post i en datauppsättning genom att anropa metoden på NewRow .DataTable Lägg sedan till raden i DataRow samlingen (Rows).
NorthwindDataSet.CustomersRow newCustomersRow =
northwindDataSet1.Customers.NewCustomersRow();
newCustomersRow.CustomerID = "ALFKI";
newCustomersRow.CompanyName = "Alfreds Futterkiste";
northwindDataSet1.Customers.Rows.Add(newCustomersRow);
Ta bort poster från en datatabell
Du kan ta bort a DataRow genom att anropa Remove metoden DataRowCollectionför eller genom att anropa metoden för Delete objektet DataRow .
Metoden Remove tar bort raden från samlingen. Om ditt program inte behöver skicka tillbaka uppdateringar till en datakälla kan du ta bort poster genom att direkt komma åt dataradsamlingen med Remove.
Omvänt Delete tar metoden inte bort , DataRowutan markerar den för borttagning. Den faktiska borttagningen sker när du anropar AcceptChanges method. Du kan programmatiskt kontrollera vilka rader som är markerade för borttagning innan du tar bort dem.
Om du vill behålla den information som datauppsättningen behöver för att skicka uppdateringar till datakällan använder Delete du metoden för att ta bort från DataRow datatabellen. Om ditt program använder a TableAdapter eller DataAdaptertar Update metoden bort rader som har en RowState of Deleted.
I följande exempel visas hur du anropar Delete metoden för att markera den första raden i Customers tabellen som borttagen:
Anmärkning
Om du får egenskapen count för en DataRowCollectioninnehåller det resulterande antalet poster som har markerats för borttagning. Om du vill få ett korrekt antal poster som inte har markerats för borttagning kan du gå igenom samlingen och titta på RowState egenskapen för varje post. Poster som markerats för borttagning har en RowState av Deleted. Du kan också skapa en datavy av en datamängd som filtrerar baserat på radtillstånd och hämta count egenskapen från den.
Avgöra om det finns ändrade rader
När du gör ändringar i poster i en datauppsättning lagras information om dessa ändringar tills du genomför dem. Du checkar in ändringarna när du anropar metoden för AcceptChanges en datauppsättning eller datatabell, eller när du anropar metoden för Update en TableAdapter eller dataadapter.
Ändringar spåras på två sätt i varje datarad:
Varje datarad innehåller information som är relaterad till dess RowState, till exempel Added, Modified, Deleted, eller Unchanged.
Varje ändrad datarad innehåller flera versioner. Den DataRowVersion innehåller den ursprungliga versionen före ändringar och den aktuella versionen efter ändringar. Medan en ändring väntar och du kan svara på RowChanging händelsen finns det också en tredje föreslagen version.
Om du vill söka efter ändrade rader anropar du metoden för HasChanges en datauppsättning. Metoden returnerar true om ändringar har gjorts i datauppsättningen. När du har fastställt att det finns ändringar kan du anropa metoden för GetChanges a DataSet or DataTable för att returnera en uppsättning ändrade rader.
I följande exempel visas hur du kontrollerar returvärdet från HasChanges metoden för att identifiera om det finns några ändrade rader i NorthwindDataset1.
if (northwindDataSet1.HasChanges())
{
// Changed rows were detected, add appropriate code.
}
else
{
// No changed rows were detected, add appropriate code.
}
Bestämma vilken typ av ändringar som ska göras
Du kan kontrollera vilken typ av ändringar som har gjorts i en datauppsättning genom att skicka ett värde från DataRowState uppräkningen till HasChanges metoden.
I följande exempel visas hur du kontrollerar datauppsättningen NorthwindDataset1 för att avgöra om några nya rader har lagts till.
if (northwindDataSet1.HasChanges(DataRowState.Added))
{
// New rows have been added to the dataset, add appropriate code.
}
else
{
// No new rows have been added to the dataset, add appropriate code.
}
Leta upp rader som innehåller fel
När du arbetar med enskilda kolumner och rader med data kan du stöta på fel. Du kan kontrollera HasErrors egenskapen för att avgöra om det finns fel i en DataSet, DataTable, eller DataRow.
HasErrors Om egenskapen för datauppsättningen är trueitererar du genom samlingarna med tabeller och sedan genom raderna för att hitta raderna med felen.
private void FindErrors()
{
if (dataSet1.HasErrors)
{
foreach (DataTable table in dataSet1.Tables)
{
if (table.HasErrors)
{
foreach (DataRow row in table.Rows)
{
if (row.HasErrors)
{
// Process error here.
}
}
}
}
}
}