Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Az DataSet osztály és a kapcsolódó osztályok a 2000-es évek elejétől származó régi .NET-keretrendszer-technológiák, amelyek lehetővé teszik az alkalmazások számára a memóriában lévő adatokkal való munkát, miközben az alkalmazások leválasztva vannak az adatbázisról. A technológiák különösen hasznosak az olyan alkalmazások esetében, amelyek lehetővé teszik a felhasználók számára az adatok módosítását és a módosítások visszaállítását az adatbázisba. Bár az adathalmazok bizonyítottan sikeres technológiának számítanak, az új .NET-alkalmazásokhoz ajánlott az Entity Framework Core használata. Az Entity Framework természetesebb módot kínál a táblázatos adatok objektummodellként való használatához, és egyszerűbb programozási felülettel rendelkezik.
Ez a cikk azt ismerteti, hogyan kérdezhet le és szerkeszthet adatokat a táblákban a .NET-keretrendszer adathalmazaiban. Az adattáblák adatait ugyanúgy szerkesztheti, mint bármely adatbázisban. Rekordokat szúrhat be, frissíthet és törölhet a táblában. Adathoz kötött űrlapon megadhatja, hogy mely mezők szerkeszthetők felhasználó által.
Ezekben az esetekben az adatkötési infrastruktúra kezeli az összes változáskövetést, hogy a módosítások visszaküldhetők legyenek az adatbázisba. Ha programozott módon szerkessze az adatokat, és vissza szeretné küldeni a módosításokat az adatbázisba, olyan objektumokat és metódusokat kell használnia, amelyek a változáskövetést hajtják végre.
A tényleges adatok módosítása mellett lekérdezhet egy DataTable konkrét adatsorokat is. Lekérdezheti például az egyes sorokat, a sorok eredeti vagy javasolt verzióit, a módosított sorokat vagy a hibákat tartalmazó sorokat.
Előfeltételek
Ahhoz, hogy a Visual Studio segítségével adatokat kérdezhet le és szerkeszthet a .NET-keretrendszer adathalmazaiban, a következőkre van szüksége:
- A Visual Studióban telepített .NET asztali fejlesztési és adattárolási és feldolgozási számítási feladatok. További információ: Visual Studio módosítása.
- Létrejön egy C# vagy Visual Basic (VB) .NET-keretrendszerprojekt.
- SQL Server Express LocalDB-adatbázisbóllétrehozott adatkészlet.
Adathalmaz sorainak szerkesztése
Egy meglévő sor DataTableszerkesztéséhez meg kell keresnie a DataRow szerkeszteni kívánt sort, majd hozzá kell rendelnie a frissített értékeket a kívánt oszlopokhoz.
Ha nem ismeri a szerkeszteni kívánt sor indexét, használja a FindBy metódust az elsődleges kulcs alapján történő kereséshez.
NorthwindDataSet.CustomersRow customersRow =
northwindDataSet1.Customers.FindByCustomerID("ALFKI");
customersRow.CompanyName = "Updated Company Name";
customersRow.City = "Seattle";
Miután megismerte a sorindexet, használhatja a sor elérésére és szerkesztésére.
northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
northwindDataSet1.Customers[4].City = "Seattle";
Új sorok beszúrása adatkészletbe
Az adatkorlátos vezérlőket használó alkalmazások általában új rekordokat adnak hozzá a BindingNavigator vezérlőÚj hozzáadása gombjának használatával.
A metódus meghívásával NewRow új rekordot is hozzáadhat egy adathalmazhoz DataTable. Ezután adja hozzá a sort a DataRow gyűjteményhez (Rows).
NorthwindDataSet.CustomersRow newCustomersRow =
northwindDataSet1.Customers.NewCustomersRow();
newCustomersRow.CustomerID = "ALFKI";
newCustomersRow.CompanyName = "Alfreds Futterkiste";
northwindDataSet1.Customers.Rows.Add(newCustomersRow);
Rekordok törlése adattáblából
Törölheti a DataRow, ha meghívja az Remove metódust a DataRowCollection objektumban, vagy ha meghívja a Delete metódust a DataRow objektumban.
A Remove metódus eltávolítja a sort a gyűjteményből. Ha az alkalmazásnak nem kell frissítéseket küldenie egy adatforrásnak, akkor a rekordokat úgy távolíthatja el, hogy közvetlenül hozzáfér az adatsor-gyűjteményhez Remove.
Ezzel szemben a Delete metódus valójában nem távolítja el a DataRow, hanem törlésre megjelöli. A tényleges eltávolítás akkor történik, amikor meghívja a AcceptChanges metódust. A törlés előtt programozott módon ellenőrizheti, hogy mely sorok legyenek kijelölve eltávolításra.
Annak érdekében, hogy megőrizze az adatokat, amelyek az adathalmaznak szükségesek a frissítések továbbításához az adatforrásba, használja a Delete metódust az DataRow eltávolítására az adattáblából. Ha az alkalmazás egy TableAdapter vagy DataAdapter használ, akkor a Update metódus törli azokat a RowState sorokat, amelyek Deleted értékkel rendelkeznek.
Az alábbi példa bemutatja, hogyan hívhatja meg a metódust a Delete tábla első sorának Customers töröltként való megjelöléséhez:
Megjegyzés:
Ha egy számláló tulajdonságát DataRowCollectionkapja meg, az eredményként kapott szám tartalmazza a törlésre megjelölt rekordokat. A törlésre nem jelölt rekordok pontos számának lekéréséhez végighaladhat a gyűjteményen, és megtekintheti az RowState egyes rekordok tulajdonságát. Azokat a rekordokat, amelyeket törlésre jelöltek, a RowState és Deleted jelzi. Másik lehetőségként létrehozhat egy adathalmaz adatnézetét, amely sorállapot alapján szűr, és lekéri belőle a darabszám tulajdonságot.
Annak meghatározása, hogy vannak-e módosított sorok
Amikor módosítja egy adathalmaz rekordjait, a rendszer a véglegesítésig tárolja a módosításokkal kapcsolatos információkat. A módosításokat akkor hajtja végre, amikor meghívja egy AcceptChanges adathalmaz vagy adattábla metódusát, vagy amikor meghívja egy Update vagy egy TableAdapter adatadapter metódusát.
A változások két módon vannak nyomon követve az egyes adatsorokban:
Minden adatsor a hozzá RowStatekapcsolódó információkat tartalmazza, például Added, Modifiedvagy DeletedUnchanged.
Minden módosított adatsor több verziót tartalmaz. Az DataRowVersion eredeti verziót a módosítások előtt, az aktuális verziót pedig a módosítások után tartalmazza. Amíg egy módosítás függőben van, és ön válaszolhat az RowChanging eseményre, egy harmadik javasolt verzió is elérhető.
A módosított sorok kereséséhez hívja meg az HasChanges adathalmaz metódusát. A metódus akkor ad true vissza, ha módosításokat hajtottak végre az adathalmazban. Miután meghatározta, hogy léteznek-e módosítások, meghívhatja a GetChanges metódust egy DataSet vagy DataTable objektumon, hogy visszaadjon egy módosított sorhalmazt.
Az alábbi példa bemutatja, hogyan ellenőrizheti a metódus visszatérési HasChanges értékét annak megállapításához, hogy vannak-e módosított sorok a metódusban NorthwindDataset1.
if (northwindDataSet1.HasChanges())
{
// Changed rows were detected, add appropriate code.
}
else
{
// No changed rows were detected, add appropriate code.
}
A módosítások típusának meghatározása
Ellenőrizheti, hogy milyen típusú módosítások történtek egy adathalmazban, ha az enumerálásból DataRowState egy értéket ad át a HasChanges metódusnak.
Az alábbi példa bemutatja, hogyan ellenőrizheti az NorthwindDataset1 adatkészletet annak megállapításához, hogy új sorok lettek-e hozzáadva.
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.
}
Hibákkal rendelkező sorok megkeresése
Ha egyes oszlopokkal és adatsorokkal dolgozik, hibákat tapasztalhat. Ellenőrizheti a HasErrors tulajdonságot annak megállapításához, hogy vannak-e hibák egy DataSet, DataTablevagy DataRow.
Ha az HasErrors adathalmaz tulajdonsága true, járja végig a táblák gyűjteményeit, majd a sorokat, hogy megtalálja a hibákat tartalmazókat.
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.
}
}
}
}
}
}