Académique Documents
Professionnel Documents
Culture Documents
NET
Obiectul Connection
Un obiect Connection reprezinta o conexiune la sursa de date. Putem specifica tipul sursei de date, locul unde se afla,
user, password, obiecte de securitate, etc.
Un obiect de conexiune este folosit de obiectele DataAdapter, Command.
//Open and close a connection using the OLE DB .NET Data Provider.
OleDbConnection cnOleDb = new OleDbConnection();
cnOleDb.ConnectionString = "Provider=Provider=SQLOLEDB;
"Data Source=(local); InitialCatalog=Northwind;...";
cnOleDb.Open();
...
cnOleDb.Close();
//Open and close a connection using the SQL Client .NET Data Provider.
SqlConnection cnSql = new SqlConnection();
cnSql.ConnectionString = "Data Source=(local);" +"Initial Catalog =Northwind;...";
cnSql.Open();
...
cnSql.Close();
exemplu
public void InsertRow(string myConnectionString)
{
// If the connection string is null, use a default.
if(myConnectionString == "")
{
myConnectionString = "Initial Catalog=Northwind;Data
Source=localhost;Integrated Security=SSPI;";
}
SqlConnection myConnection = new SqlConnection(myConnectionString);
string myInsertQuery = "INSERT INTO Customers (CustomerID,
CompanyName) Values('NWIND', 'Northwind Traders')";
SqlCommand myCommand = new SqlCommand(myInsertQuery);
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
Obiectul Command
Aceste obiecte sunt similare in structura cu cele folosite de ADO Command sau DAO QueryDef.
Aceste obiecte pot reprezenta o cerere la baza de date, un apel de procedura stocata, sau o cerere directa pentru a returna
continutul unei anumite tabele din baza de date.
Cererile pot fi de tip Select, Insert, Update, Delete sau de creare / modificare / stergere tabele, view-uri, proceduri stocate,
triggere, constrangeri.
Obiectul Command prezinta diferite modalitati de a executa o cerere:
ExecuteNonQuery, ExecuteReader, ExecuteXmlReader.
Obiectul DataReader
Este proiectat pentru a regasi si examina inregistrarile returnate de cererea facuta serverului bazei de date.
Cand navigam printre inregistrari, inregistrarea anterioara este descarcata, nu mai avem acces la ea. DataReader nu
suporta update.
Valorile returnate de DataReader sunt read only.
Obiectul Transaction
Obiectul Connection poseda o metoda BeginTransaction pe care o putem utiliza pentru a crea obiecte Transaction.
Obiectul Parameter
Folosit pentru parametrizarea cererilor.
SELECT CustomerID, CompanyName, CompanyName, Phone FROM Customers WHERE CustomerID = ?
Se creaza un obiect Parameter pentru fiecare parametru din cerere si apoi adaugam aceste obiecte la colectia de obiecte
Parameter al obiectului Command.
Se pot defini tipurile de data si valorile parametrilor.
Obiectul DataAdapter
Obiectele DataAdapter actioneaza ca un “pod” intre baza de date si obiectele deconectate.
Metoda Fill.DataAdapter va plasa rezultatele cererii intr-un DataSet sau DataTable, pasata ca parametru in aceasta
metoda.
Modificarile facute intr-un DataSet pot fi transferate in baza de date prin diverse mecanisme puse la dispozitie de
DataAdapter.
Vezi colectiile TableMappings, ColumnMappings.
Obiecte deconectate
Obiectul DataTable
The DataTable is a central object in the ADO.NET library. Other objects that use the DataTable include the DataSet and
the DataView.
The DataSet and DataTable objects inherit from MarshalByValueComponent, and support the ISerializable interface for
remoting. These are the only ADO.NET objects that can be remoted.
Obiectul DataRow
Pentru a accesa valorile memorate intr-un obiect DataTable va trebui sa folosim obiecte Row ce contin o colectie de
obiecte DataRow.
Examinarea datei dintr-o coloana specifica a unei inregistrari se face folosind proprietatea Item a obiectului DataRow.
Automatic Memory Management - Garbage Collection
Creare obiecte, gestiune memorie heap. eliberare memorie heap (distragere obiecte). Etapele necesare pentru a accesa o
resursa:
1. Creare resursa (operatorul new).
2. Iniţializare memorie pentru a seta starea iniţiala a obiectului înainte de a o utiliza (operaţiile se realizează
in constructor).
3. Utilizare resursa prin accesarea membrilor tipului respectiv.
4. Eliberare resursa (eliberarea zonei de memorie ocupata de resursa).
Managementul automat al memoriei încearcă sa rezolve problemele legate de accesarea obiectelor inexistente (bug de
programare) precum si menţinerea memoriei heap intr-o stare consistenta (pierderi de memorie la nivel de aplicaţie).
Programatorul este degrevat de sarcina gestionarii memoriei: momentul când va trebui sa elibereze memoria ocupata de
un anumit obiect.
Garbage collector nu are informaţii suficiente despre resursa ce reprezintă un anumit tip in memorie.
Pentru ca o resursa sa se poate elibera corect din memorie, dezvoltatorul trebuie sa scrie cod in metodele Finalize, Dispose
si Close in cazul cand acel obiect foloseşte resurse unmanaged.
Tipurile preconstraite. cum ar fi Int32, Point, Rectangle. String. ArrayList si Serializationlnfo. reprezintă resurse ce nu au
nevoie de cod special pentru a fî eliberate din memorie.
Tipurile ce reprezintă (sau wrap) resurse negestionate (unmanaged) cum ar fi fişiere, socket-uri. mutexuri. bitmap. etc. au
nevoie de execuţia unui cod de eliberare (clean up) din memorie cand obiectul este distras.