Extras din laborator
Accesul la date este factorul crucial in toate aplicatiile, iar ADO.NET ofera mijloace de accesare a datelor in aplicatii. ADO.NET este o arhitectura de date deconectata. Datele sunt extrase din baza de date si stocate pe calculatorul local. Datele se manipuleaza pe computerul local, iar conectarea la baza de date se realizeaza doar cand se doreste modificarea inregistrărilor sau extragerea de noi date. Aceste clase se regasesc in dll-ul System.Data.
Clasa DataTable:
Un obiect de tip DataTable reprezinta date stocate in memorie sub forma de linii si coloane care pot avea sau nu constrangeri. Un obiect de tip DataTable se populeaza cu alte obiecte de tip DataColumn si DataRow care contin datele propriu-zise.
Obiectele DataTable nu sunt utile pana cand nu le cream o schema adaugand obiecte DataColumn si setand constrangeri pe fiecare coloana pentru a mentine integritatea datelor si a limita cantitatea de date pe care o putem adauga.
Incepem prin a crea un tabel simplu si cateva coloane:
DataTable Cellphones = new DataTable("cell");
DataColumn IMEI = new DataColumn("IMEI"); // numele coloanei intre paranteze
IMEI.DataType = typeof(string); // (default string) precizeaza tipul de date din coloana int/string/etc
IMEI.MaxLength = 15; // (default -1 -fara limita-) lungimea maxima a textului admisa (ex: nvarchar(30) )
IMEI.Unique = true; // (default false) permite duplicarea intrarilor pe aceasta coloana (daca fiecare item din coloana e unic, coloana este primary key pentru tabel)
IMEI.AllowDBNull = false; // (default true) specifica daca pe coloana pot exista valori nule
IMEI.Caption = "IMEICaption"; // (default "numele coloanei") sir cu care notam partea dintr`un grafic care reprezinta coloana
Cellphones.Columns.Add(IMEI); // Met Columns returneaza coloanele
Daca nu avem nicio coloana care sa contina elemente unice ( Unique = false ), putem adauga o coloana index care sa se incrementeze automat pe masura ce adaugam noi linii in tabel. Acest lucru se face setand proprietatea AutoIncrement a unei coloane true, AutoIncrementSeed la valoarea de la care vrem sa se inceapa indexarea si AutoIncrementStep la valoare cu care sa se incrementeze de fiecare data cand un nou rand este adaugat. Cand se face trimiterea de date dintr-o baza de date locala unei alte baze de date back-end, coloana care contine indexurile nu se trimite si noile randuri sunt indexate in continuarea celor existente, insa la o interogare in care este necesara extragerea de informatii din ambele baze de date, indexurile comune vor genera o exceptie. Pentru a evita acest lucru, indexarea din baza de date locala trebuie sa fie negativa, AutoIncrementSeed si AutoIncrementStep sa fie negative deoarece baza de date principala nu va genera numere negative.
IMEI.AutoIncrement = true;
IMEI.AutoIncrementSeed = 1;
IMEI.AutoIncrementStep = 1;
Un obiect DataRow poate fi creat numai in contextul unui DataTable deoarece trebuie sa se conformeze constrangerilor de pe fiecare coloana. Metoda Rows dintr-un obiect DataTable returneaza randurile care din tabel, iar metoda Add adauga un nou rand.
Preview document
Conținut arhivă zip
- Disconnected classes.docx