Documente Academic
Documente Profesional
Documente Cultură
Pentru realizarea unei aplicaii care folosete baze de date se poate proceda n
dou moduri:
1. Se folosete o aplicaie de tip sistem de gestiune de baze de date.
2. Se creeaz baza de date cu ajutorul unei aplicaii de tip server de baze de
date i se scriu apoi aplicaiile care acceseaz baza de date ntr-un limbaj
ce posed funciile necesare accesrii serverului.
Platforma.NET
Orice program scris ntr-unul din limbajele .NET este compilat n Microsoft
Intermediate Language (MSIL), n concordan cu Common Language Specification
(CLS). Acest standard face posibil colaborarea ntre componente scrise n limbaje
diferite fr eforturi majore din partea programatorilor.
Aplicaiile realizate cu ajutorul mediului de lucru .NET Framework pot folosi
clase i biblioteci din cadrul de lucru pentru a trimite instruciuni SQL ctre o baz de
date relaional (de obicei Microsoft SQL Server) i pentru a prelucra rezultatele
execuiei instruciunilor SQL de ctre sistemul DBMS (Database Management
System).
ADO.NET
ADO.NET(Active Data Objects)
ce permit aplicaiilor s se
Componenta Connection
Clasele din categoria Connection (SqlConnection, OleDbConnection, etc.)
conin date referitoare la sursa de date (locaia, numele i parola contului de acces,
etc.), metode pentru deschiderea/nchiderea conexiunii, pornirea unei tranzacii etc.
Aceste clase se gsesc n subspaii (SqlClient, OleDb, etc.) ale spaiului de nume
System.Data. n plus, ele implementeaz interfaa IDbConnection.
Proprieti
ConnectionString
separai prin ;.
Stringul de conectare se transmite fie prin parametrul (de tip string) al
constructorului, fie prin intermediul proprietii ConnectionString(String), cu
accesori de tip get i set.
Parametru
Provider
Data Source
Initial Catalog
Integrated
Security
User ID
Password
Descriere
Specific tipul furnizorului de date pentru
conectarea la sursa de date. Acesta trebuie
precizat doar dac se folosete OLE DB .NET Data
Provider, i nu se specific pentru conectare la
SQL Server.
Identific serverul, care poate fi local, numele
unui calculator sau o adresa IP.
Specific numele bazei de date. Baza de date
trebuie s se gseasc pe serverul dat n Data
Source
Dac Integrated Security = SSPI sau true logarea se
face cu user-ul configurat pentru Windows.
Numele unui user care are acces de logare pe
server
Parola corespunztoare ID-ului specificat.
Exemple de conectare
Ex.1) conectare la o surs de date SQL Server
using System.Data;
using System.Data.SqlClient;
String dataBase=DbStudenti;
SqlConnection conexiune=null ;
conexiune = new SqlConnection(@"Data Source=VIOREL-PC\SQLEXPRESS;
+Initial Catalog=" +dataBase+
";Integrated Security=SSPI"); // SSPI sau True
Conexiune.Open();
using System.Data.SqlClient;
SqlConnection co =new SqlConnection(@Data Source=serverBD;
Database=scoala;User ID=elev;Password=madonna);
co.Open();
using System.Data.OleDb;
OleDbConnection co =
new OleDbConnection(@Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Date\scoala.mdb);
co.Open();
myOleDbDataReader.Close();
myOleDbConnection.Close();
Metode
Open(): deschide o conexiune la baza de date
Close() i Dispose(): nchid conexiunea i elibereaz toate resursele
alocate ei.
BeginTransaction(): pentru executarea unei tranzacii pe baza de date;
la sfrit se apeleaz Commit() sau Rollback().
ChangeDatabase(): se modific baza de date la care se vor face
conexiunile. Noua baz de date trebuie s existe pe acelai server ca i
precedenta.
CreateCommand(): creeaz o comand (un obiect de tip Command)
valid asociat conexiunii curente.
Scopul instanierii unui obiect de tip SqlConnection este ca alte obiecte ADO.NET s
poat lucra cu baza de date. Alte obiecte, cum ar fi SqlDataAdapter i SqlCommand,
au constructori care primesc obiectul conexiunii ca parametru. Atunci cnd se lucrez
cu o baz de date trebuie urmai paii:
1. instanierea unui obiect SqlConnection;
2. deschiderea conexiunii;
3. trimiterea conexiunii ca parametru altor obiecte ADO.NET;
4. realizarea operaiilor asupra bazei de date;
5. nchiderea conexiunii.
Componenta Command
Clasele din categoria Command (SqlCommand, OleDbCommand, etc.) conin
date referitoare la o command SQL (SELECT, INSERT, DELETE, UPDATE) i
metode pentru executarea unei comenzi sau a unor proceduri stocate.
Instanierea unui obiect de tipul SqlCommand sau OleDbCommand se face
lund ca parametru un string, care este comanda ce va fi executat, i o referin la un
obiect de tipul SqlConnection respectiv OleDbConnection.
Constructori pentru obiecte de tip SQLCommand:
SqlCommand()
SqlCommand(string CommandText, SqlConnection con )
Constructori pentru obiecte de tip OleDbCommand:
OleDbCommand()
OleDbCommand(string CommandText, OleDbConnection con )
Proprieti
CommandText (String): conine comanda SQL sau numele procedurii
stocate care se execut pe sursa de date.
CommandTimeout (int): reprezint numrul de secunde care trebuie s
fie ateptat pentru executarea comenzii. Dac se depeste acest timp,
atunci se genereaz o excepie.
CommandType (enumerare de componente de tip CommandType):
reprezint tipul de comand care se execut pe sursa de date. Valorile pot
fi: StoredProcedure (apel de procedur stocat), Text (comand SQL
obinuit), TableDirect (numai pentru OleDb)
Connection (System. Data. [Provider].PrefixConnection): conine obiectul
de tip conexiune folosit pentru legarea la sursa de date.
Parameters
(System.Data.[Provider].PrefixParameterCollection):
returneaz o colecie de parametri care s-au transmis comenzii.
Transaction (System.Data.[Provider].PrefixTransaction): permite accesul
la obiectul de tip tranzacie care se cere a fi executat pe sursa de date.
Componenta DataReader
Tipul DataReader (SqlDataReader, OleDbDataReader, etc.) este folosit pentru a citi
date n cea mai eficient metod posibil. Nu poate fi folosit pentru scriere. Odat citit o
informaie nu mai poate fi citit nc o dat. DataReader citete secvenial date.
Datorit faptului c citete doar nainte (forward-only) permite acestui tip de date s
fie foarte rapid n citire.
Un obiect DataReader nu are constructor, ci se obine cu ajutorul unui obiect de tip
Command i prin apelul metodei ExecuteReader.
Conexiunea cu baza de date este activat pe toat durata lucrului cu un obiect de tip
DataReader. Toate clasele DataReader (SqlDataReader, OleDbDataReader, etc.)
implementeaz interfaa IDataReader.
Utilizarea acestui tip de obiecte ofer: accesul conectat, performanele bune la citire,
consum mic de resurse i tipizarea puternic.
Dac ntr-o aplicaie este nevoie doar de informaii care vor fi citite o singura dat,
sau rezultatul unei interogri este prea mare ca sa fie reinut n memorie(caching) DataReader
este soluia cea mai bun.
DataReader implementeaz i indexatori. Valoarea indexului trebuie s fie numrul
(ncepnd cu 0) sau numele coloanei din tabelul rezultat. Indiferent c se folosete un index
numeric sau unul de tip string indexatorii ntorc totdeauna un obiect de tipul object fiind
necesar conversia.
Proprieti:
IsClosed (boolean, read-only)- returnez true dac obiectul este deschis i fals altfel
HasRows (boolean,read-only)- verific dac reader-ul conine cel puin o nregistrare
Item (indexator de cmpuri)
FieldCount-returneaz numrul de cmpuri din nregistrarea curent
Metode:
Close() nchidere obiectului i eliberarea resurselor; trebuie s precead nchiderea
conexiunii.
GetBoolean(), GetByte(), GetChar(), GetDateTime(), GetDecimal(),
GetDouble(), GetFloat(), GetInt16(), GetInt32(), GetInt64(),
GetValue(), GetString() returneaz valoarea unui camp specificat, din nregistrarea
curent
GetBytes(), GetChars() citirea unor octei/caractere dintr-un cmp de date binar
GetDataTypeName(), GetName() returneaz tipul/numele cmpului specificat
IsDBNull() returneaz true dac n cmpul specificat prin index este o valoare NULL
NextResult()determin trecerea la urmtorul rezultat stocat n obiect
Read() determin trecerea la urmtoarea nregistrare, returnnd false numai dac aceasta nu
exist; de reinut c iniial poziia curent este naintea primei nregistrri.
DataReader obine datele ntr-un stream secvenial. Pentru a citi aceste informaii trebuie
apelat metoda Read; aceasta citete un singur rnd din tabelul rezultat. Metoda clasic de a
citi informaia dintr-un DataReader este de a itera intr-o bucla while.
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
System.Data;
System.Data.SqlClient;
System.Data.OleDb;
namespace ConectareLaSurseDeDate
{
public class DbSqlServer
{
static string stringConectare =
@"Data Source=FUJITSU_AMILO; Initial Catalog=dbFacturare;
Integrated Security=SSPI";
public static SqlConnection con;
public DbSqlServer()
{
try
{
con = new SqlConnection(stringConectare);
Console.WriteLine("Conectare cu succes!");
}
catch { Console.WriteLine("Esec conectare!"); }
}
public void ListareClienti()
{
SqlDataReader rdr;
try
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;// implicit
cmd.Connection = con;
cmd.CommandText = "select * from tClienti";
con.Open();
rdr = cmd.ExecuteReader();
}
catch { Console.WriteLine("esec rdr"); return; }
Console.WriteLine("Lista Clientilor");
Console.WriteLine("{0,-10}{1,-20}", "Cod ", "Nume ");
while (rdr.Read())
{
Console.WriteLine("{0,-10}{1,-20}", rdr["CodClient"], rdr["NumeClient"]);
}
rdr.Close();
con.Close();
}
catch (Exception e)
{
Console.WriteLine("Err: Stergere esuata\n"
+ strDelete + "\n" + e.ToString());
};
}
con.Close();
}
class DbAccess
{
static string strConnAccess = @"Provider=Microsoft.Jet.OleDB.4.0;
Data Source=D:\Scoala\ProjectsC#\DREPT.mdb";
public OleDbConnection con;
public DbAccess()
{
try
{
con = new OleDbConnection(strConnAccess);
}
catch { Console.WriteLine("erroare conectare"); };
}
public void Listare()
{
try
{
string strSelect = "select nume,prenume,media from tDosare1 where
media>9.50";
OleDbCommand cmd = new OleDbCommand(strSelect, con);
try
{
con.Open();
OleDbDataReader rdr = cmd.ExecuteReader();
Console.WriteLine(" \n LISTA CANDIDATILOR CU MEDII MAI MARI DACAT
9.50");
while (rdr.Read())
{
Console.WriteLine("{0,-20}{1,-20}{2:##.##}",
rdr["Nume"], rdr["prenume"], rdr["media"]);
}
rdr.Close();
}
catch { Console.WriteLine("Esec"); }
}
catch (Exception e1) { Console.WriteLine(e1.Message); }
con.Close();
}
}
public class DbExcel
{
static string strConectareExcel =
@"Provider=Microsoft.ACE.OLEDB.12.0;" +
@" Data Source=d:\scoala\ProjectsC#\Candidati.xlsx;
Extended Properties=" + (char)34 + "Excel 12.0;" + (char)34;
rdr.Close();
con.Close();
}
catch (Exception ex)
{ Console.WriteLine(ex); }
}
}
class Program
{
static void Main(string[] args)
{
DbSqlServer dbSQL = new DbSqlServer();
dbSQL.ListareClienti();
dbSQL.InserareClient("21", "Radu", "Pitesti");
dbSQL.ListareClienti();
dbSQL.UpdateDenumireClient("21", "Nicolae");
dbSQL.ListareClienti();
dbSQL.DeleteClient("21");
dbSQL.ListareClienti();
// Baza de date ACCESS
DbAccess dbA = new DbAccess();
dbA.Listare();
// Baza de date EXCEL
dbE.con.Open();
string strUpdate = "update [sheet1$b4:e9] set media=(nota1+nota2)/2";
OleDbCommand cmdUpdate = new OleDbCommand(strUpdate, dbE.con);
cmdUpdate.ExecuteNonQuery();
dbE.con.Close();
Console.WriteLine("\n");
dbE.Listare();
dbE.con.Open();
string insert = "insert into [sheet1$b4:e10](nume,nota2) values('ion',6)";
OleDbCommand cmdInsert = new OleDbCommand(insert, dbE.con);
cmdInsert.ExecuteNonQuery();
dbE.con.Close();
Console.ReadKey();
}
}