HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

UNIQUE-megszorítás létrehozása


Megszorítások DataTable-objektumban 1. rész

Példaprogram letöltése

8334 bájt

Két részes cikksorozatunkban bemutatjuk, hogy az adatbázisok esetén jól ismert megszorításokat miként hozhatjuk létre programból, az adatokat tároló DataTable objektum oszlopaira deklarálva ezeket. Ennek kapcsán megismerhetjük a DataTable osztály Constraints property-jét, vagyis hogy milyen megszorítás osztályok megadásával valósíthatjuk meg az említett működést.

A mellékelt példában bemutatjuk, hogy hogyan használható a DataTable osztály Constraints property-je, valamint részletesen megismerkedhetünk azzal, hogy milyen osztály megadásával deklarálhatunk UNIQUE-megszorítást az adattábla oszlopaira anélkül, hogy ezt adatbázisszinten kellene megtennünk. Példánk futtatásához nincs is szükség előzetesen adatbázis létrehozására.
A DataTable osztály Constraints property-jén keresztül érhetjük el azt az objektumgyűjteményt, melybe előzetesen létrehozott, és paraméterezett megszorítás objektumokat vehetünk fel. Deklarációja a követező:
Constraints
Osztály: DataTable
public ConstraintCollection Constraints {get;}
A property tehát egy megszorítás gyűjtemény, amelybe tetszőleges számú megszorítás objektum elhelyezhető. Egy tömbről van szó, így használható a tömbök esetén ismert valamennyi metódus (Add, Clear, AddRange,…), valamint elemeire azok sorszámával is hivatkozhatunk.
Az említett UNIQUE-megszorítás megadásához deklarálnunk kell egy UniqueConstraint osztályú objektumot, majd ennek property-jein keresztül megadni, hogy mely oszlopokra szeretnénk kiterjeszteni a megszorítás érvényét. Most megvizsgáljuk az osztály leggyakrabban használt property-jeit:
Columns
Osztály: UniqueConstraint
public virtual DataColumn[] Columns {get;}
A tömb elemei reprezentálják azokat a DataColumn típusú oszlopokat, melyekre vonatkozik az adott megszorítás, vagyis ezen oszlopok minden elemének egyedinek kell lennie.
ConstraintName
Osztály: UniqueConstraint
public virtual string ConstraintName {get; set;}
Nevet adhatunk az illető megszorításnak, mellyel a megszorítás objektumra hivatkozhatunk a DataTable osztályban.
IsPrimaryKey
Osztály: UniqueConstraint
public bool IsPrimaryKey {get;}
Lekérdezhető, hogy az adott megszorítás elsődleges kulcs megszorítás-e. Értéke TRUE, ha igen, ellenkező esetben FALSE.
Table
Osztály: UniqueConstraint
public override DataTable Table {get;}
Lekérdezhető, hogy az adott megszorítás mely táblához tartozik.
Metódusai közül konstruktorait említhetnénk, melyeknek kilenc variációja létezik. Legtöbb beállítást a következő konstruktorban tehetünk meg:
UniqueConstraint
Osztály: UniqueConstraint
public UniqueConstraint(
string name,
DataColumn[] columns,
bool isPrimaryKey
);
Megadhatjuk a megszorítás objektum nevét, az oszlopgyűjteményt, amelyekre a megszorítás érvényes, valamint beállíthatjuk, hogy elsődleges kulcs megszorítást akarunk létrehozni, vagy sem.
Paraméterek
string name
A megszorítás neve.
DataColumn[] columns
Az oszloplista.
bool isPrimaryKey
Az elsődleges kulcs megszorításra vonatkozó érték.
A mellékelt programban a FillTable metódussal indulás előtt feltöltünk egy DataTable objektumot, majd ennek tartalmát megjelenítjük egy DataGrid kontrolban. A FillTable metódusban, miután deklaráltuk, és a DataTable objektumba fölvettük a táblaoszlopokat, megadjuk a UNIQUE-megszorításra vonatkozó információkat, vagyis deklarálunk egy UniqueConstraint osztályú objektumot, konstruktorában megadva, hogy az első táblaoszlopra vonatkozzon az adott megszorítás:
UniqueConstraint uc = new UniqueConstraint(dc1);
Valamint elhelyezzük a megszorítás objektumot a DataTable objektum Constraints megszorítás listájában:
dt.Constraints.Add(uc);
A táblázat alatt elhelyezett beviteli mezőkbe adatokat megadva új rekordok vihetők be az adattáblába. Az ID oszlop adatainak ismétlődése esetén egy ConstraintException kivétel keletkezik, melyet a programban elkaptunk.
Azonban amikor a DataGrid kontrolba manuálisan próbálunk már létező ID-vel rendelkező rekordot bevinni, akkor a rendszer által generált üzenetet kapunk a megszorítás létezéséről, illetve választanunk kell: a bevinni szándékozott adatot javítjuk, vagy a bevitt oszlopérték törlődik.



Cikksorozat

#IDKategóriaCikk címeSorozat
1621DelphiMySQL szerverek elérése Delphi-ből1. rész
1632DelphiMySQL szerverek elérése Delphi-ből2. rész
1641DelphiMySQL szerverek elérése Delphi-ből3. rész
1649DelphiMySQL szerverek elérése Delphi-ből4. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 62. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |