Professional Documents
Culture Documents
NET
Jan Kupka
2. kvtna 2005
Obsah
1 vod do ADO.NET 3
1.1 Co je to ADO.NET? . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Pro koho je tato pruka urena? . . . . . . . . . . . . . . . . . . 3
1.3 Co budete potebovat? . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Databze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 MSDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.3 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.4 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.5 Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.6 Ostatn databzov systmy . . . . . . . . . . . . . . . . . 5
2 Technologie ADO.NET 6
2.1 Pipojen k databzi . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Vyuit vlastnost platformy .NET . . . . . . . . . . . . . . . . . 6
2.3 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Zprostedkovatel pstupu k databzovm systmm . . . . . . 7
3 Architektura ADO.NET 8
3.1 Jmenn prostory . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Pehled td . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
ADO.NET Obsah
6 XML 19
8 Zvr 23
A vod do MSDE 24
A.1 Instalace MSDE . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.2 Prce s MSDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.3 Pprava zkladn databze aneb rychlokurz SQL . . . . . . . . . 24
A.4 Sprva MSDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2
Kapitola 1
vod do ADO.NET
1.1 Co je to ADO.NET?
Ze veho nejdve bychom si mli ci, co je vlastn ADO.NET, o kterm je cel
tato pruka napsna. ADO.NET je rozshlou knihovnou td, kter nm umo-
uj pracovat s databzemi a datovmi soubory. Jeliko se jedn o soust .NET
frameworku, poskytuje ADO.NET uivateli veker vymoenosti, kter obsahuje
samotn .NET. Jde zejmna o podporu mnoha jazyk (C# , Managed C++,
Visual Basic .NET, J# a dalch), automatick uvolovn pamti a objektov
orientovan pstup.
3
ADO.NET Kapitola 1
1.4 Databze
Pomoc rozhran ADO.NET mete pipojit k programu libovoln databzov
systm. Poadavkem je pouze to, aby systm ml vlastn OleDb ovlada. Tento
ovlada naleznete prakticky u vech databzovch systm. V nsledujcch od-
stavcch si piblme nejpouvanj databzov systmy.
1.4.2 MSDE
MSDE nen vlastn samostatn produkt. Je to jedna z verz programu Microsoft
SQL Serveru. Nespornou vhodou tto verze je to, e je k dispozici zdarma.
Je vhodn pro domc pouit, stejn jako pro vvoje aplikac. MSDE je
distribuovna bez administrtorskch nstroj. Na internetu se d ovem sehnat
mnoho vynikajcch administrtorskch nstroj pro tento databzov systm,
nap. MSDE Manager nebo DBA Manager 2000. Dalm omezenm je maximln
poet pti souasn sputnch proces. Kad dal proces mus pokat na
skonen nkterho bcho. Pipojen k MSDE z programu je stejn jako u SQL
Serveru, take v ppad, e u vm monosti MSDE pestanou stait, mete
bez problm pejt na placen SQL Server. Spolen s komern verz produktu
Microsoft SQL Server 2005 by mla vyjt i nekomern verze - Microsoft SQL
Server 2005 Express, kter bude nstupcem MSDE. Podle vyjden pracovnk
firmy Microsoft by mla bt tato omezen verze pro vvoje a domc uivatele
dostupn zdarma i za cenu distribunch nklad.
Internetov strnky programu: http://www.microsoft.com/sql/
/msde/.
1.4.3 Oracle
Oracle je pmm konkurentem SQL Serveru na poli databzovch systm.
Firma Oracle v souasn dob nabz svj produkt Oracle ve verzi 10. Jedn se,
stejn jako u SQL Serveru, o placen produkt. Existuje ovem i jeho nekomern
verze, kterou je mon si po zaregistrovn sthnout z webovch strnek firmy.
Internetov strnky programu: http://www.oracle.com/.
4
ADO.NET Kapitola 1
1.4.4 MySQL
MySQL je nejpopulrnj open-source databzov systm. Velkou vhodou je
hlavn jeho multiplatformn pouit, me bt nasazen na operanch systmech
Unix, Linux, Solaris, OS/2 i Windows. Protoe je tento systm zdarma, nepod-
poruje nkter funkce, kter komern systmy poskytuj.
Internetov strnky programu: http://www.mysql.com/.
5
Kapitola 2
Technologie ADO.NET
2.3 XML
Jazyk XML (eXtensible Markup Language) je asto oznaovn jako revolun
technologie. Je to hlavn dky jeho otevenosti a jazykov nezvislosti. XML m
podporu u v .NET Framework, ale ADO.NET jde jet dl. Jazyk XML se stal
stejnm jazykem pro penos dat v prosted ADO.NET.
6
ADO.NET Kapitola 2
7
Kapitola 3
Architektura ADO.NET
3.2 Pehled td
Tdy v knihovn ADO.NET lze rozdlit na dv mnoiny. Prvn mnoinu tvo
tdy zamen na sprvu dat (Data Related Components). Tyto tdy jsou zcela
nezvisl na databzi a reprezentuj umstn dat z databze v pamti. Druhou
mnoinu tvo tdy zvisl na pouit databzi (Data Provider Components).
Tyto tdy umouj propojen mezi tdami pro sprvu dat a databzovmi
systmy.
8
Kapitola 4
4.1 DataSet
DataSet je zkladnm stavebnm prvkem kad sloitj databzov aplikace.
Jde o kompletn reprezentaci sady dat, kter v sob zahrnuje tabulky, vztahy
mezi daty a omezen. S tm vm me DataSet pracovat v reimu offline (tedy
odpojen od databzovho systmu). DataSet se nestar o pipojen k databzi,
jde pouze o objekt spravujc data v pamti. DataSet me obsahovat data na-
ten nejen z databzovch systm, ale napklad i z xml soubor. K datm v
DataSetu meme pistupovat, meme je upravovat, mazat nebo porovnvat
s daty v pvodnm datovm zdroji.
4.2 DataTable
DataTable (datov tabulka) ukld data stejn jako to dl tabulka v databzi.
Data jsou umstna v dcch (rows) a kad poloka v dce pslu konkrt-
nmu sloupci (column). Objekt DataTable me bt pouvn samostatn, ale i
jako soust objektu DataSet. DataTable se skld z kolekce objekt Columns,
kolekce objekt Rows a kolekce objekt Constraints. Kolekce Columns ve spo-
jen s kolekc Constraints definuje takzvan schma objektu DataTable, zatmco
kolekce Rows obsahuje data.
Kolekce Columns
Kolekce Columns je instanc tdy DataColumnCollection a jde o kontejner pro
objekty typu DataColumn. Objekt DataColumn definuje sloupec datov tabulky
vetn jeho jmna, datovho typu a informace o tom, zda jde o primrn kl i
se jedn o autoinkrementan sloupec.
Kolekce Rows
Kolekce Rows je instanc tdy DataRowCollection a jde o kontejner pro ob-
jekty typu DataRow. Objekt DataRow obsahuje uloen data objektu Data-
Table podle jejich definic v kolekci DataTable.Columns. Kad dka DataRow
obsahuje jednu poloku pro kad sloupec DataColumn v kolekci Columns.
9
ADO.NET Kapitola 4
Kolekce Constraints
Kolekce Constraints je instanc tdy ConstraintCollection a jde o kontejner
pro objekty typu ForeignKeyConstraint a/nebo objekty typu UniqueConstra-
int. Objekt ForeignKeyConstraint definuje akci, kter m bt provedena na
sloupec primrnho nebo cizho kle, pokud je dek zmnn nebo smazn.
Objekt UniqueConstraint je pouvn k zajitn jedinenosti vech hodnot ve
sloupci.
4.3 DataColumn
Objekt DataColumn definuje sloupec a jeho datov typ.
10
ADO.NET Kapitola 4
Autoinkrementace
Autoinkrementan sloupec mete nastavit pmo v databzovm systmu nebo
podle nsledujcho pkladu:
// povoleni autoinkrementace
filmovaTabulka.Columns["ID"].AutoIncrement = true;
// zacatek autoinkrementace
filmovaTabulka.Columns["ID"].AutoIncrementSeed = 10;
// krok pri autoinkrementaci
filmovaTabulka.Columns["ID"].AutoIncrementStep= 10;
4.4 DataRow
Objekt DataRow obsahuje data pro jednu dku datov tabulky.
4.4.1 Constraints
Relan databze zajiuj integritu dat pomoc omezen (constraints). Tato ome-
zen pesn definuj, co se bude dt v ppad, e data v souvisejcm sloupci i
dce jsou mnna. V ADO.NET existuj dva druhy omezen: ForeignKeyCon-
straint a UniqueConstraint.
11
ADO.NET Kapitola 4
ForeingnKeyConstraint
Toto omezen specifikuje akce, kter maj bt provedeny, pokud je hodnota ve
sloupci i sloupcch smazna nebo upravena. Tento typ omezen je uren pro
pouit ve vztahu k primrnmu/cizmu kli. Pokud je hodnota v rodiovskm
sloupci zmnna nebo smazna, ForeignKeyConstraint definuje, co bude slou-
pec potomka v dan situaci dlat. Akce k proveden jsou definovny ve vlastnos-
tech ForeignKeyConstraint.DeleteRule nebo ForeignKeyConstraint.UpdateRule
a mohou b nastaveny na tyto hodnoty:
Rule.Cascade - smae nebo uprav dky ve vztahu (implicitn akce)
Rule.SetNull - nastav hodnoty ve vztanch dkch na DBNull
UniqueConstraint
Toto omezen zajiuje uniktn hodnoty v celm sloupci. Pokud se pokusme
zadat stejnou hodnotu do dvou dk sloupce s omezenm UniqueConstraint,
bude vyvolna vyjmka.
4.5 DataRelation
Objekt DataRelation umouje vytvoit vztah mezi dvma objekty typu Data-
Table pomoc jejich dvou sloupc. Jedn se prakticky o programov vytvoen
vztahu primrn kl - ciz kl.
// inicializace sloupcu
parentColumn = DataSet.Tables["Customers"].
Columns["CustID"];
childColumn=DataSet.Table["Orders"].
Columns["CustID"];
// vytvoreni relace
DataRelation relationCustomersOrders = new
DataRelation ("CustomersOrders", parentColumn,
childColumn);
// pridani relace
Dataset.Relations.Add(relationCustomersOrders);
4.6 DataColumnMapping
a DataTableMapping
Tyto objekty umouj namapovat sloupcm tabulky nov jmna pro jednodu
pouit v databzovch aplikacch.
12
Kapitola 5
//oteven pipojen
conn.Open();
//uzaven spojen
conn.Close();
Druh pklad ukazuje, jak se meme pipojit k databzovmu serveru pomoc
syntaxe using. Pi ukonen bloku uzavenho pkazem using bude uzaveno
spojen s databz a zruen objekt SqlConnection. Z tohoto dvodu nemusme
pout metodu Close().
1 nezapomete pipojit k programu jmenn prostor System.Data.SqlClient
13
ADO.NET Kapitola 5
Metoda ExecuteNonQuery()
- provede pkaz a nevrac dn vsledky
- pouv se pro spoutn editanch, vkldacch a odstraovacch dotaz
- vrac jedinou hodnotu, kterou je poet ovlivnnch zznam
Pklad:
// SQL dotaz
string strCommand = "CREATE TABLE Filmy
(nazev varchar, rok int)";
14
ADO.NET Kapitola 5
// proveden dotazu
command.ExecuteNonQuery();
Metoda ExecuteReader()
- provede pkaz a vrt objekt, kter implementuje rozhran IDataReader
- vrcen objekt meme prochzet pomoc snmae dat (DataReader), kter
si podrobn popeme pozdji
Pklad:
string strCommand = "SELECT nazev, rok FROM Filmy";
SqlCommand command = new SqlCommand(strCommand,
conn);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("{0} - {1}",reader[0], reader[1]);
}
Metoda ExecuteScalar()
- provede pkaz a vrt jednu hodnotu
- pouv se napklad pro uren potu zznam v tabulce
Pklad:
15
ADO.NET Kapitola 5
Uloen procedury
Voln procedur provdme takt pomoc objektu SqlCommand. Nejdve mu-
sme vytvoit proceduru v na databzi. Zde je jednoduch pklad uloen
procedury pro SQL server:
CREATE PROCEDURE InsertFilm(@nazev varchar(50),
@rok INTEGER) AS INSERT INTO Filmy VALUES
(@nazev, @rok);
Pklad pouit uloen procedury:
// nastaveni objektu SqlCommand
SqlCommand command = new SqlCommand("InsertFilm");
command.Connection = conn;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter ("@nazev",
SqlDbType.VarChar));
command.Parameters.Add(new SqlParameter ("@rok",
SqlDbType.Int));
//naplnn datasetu
da.Fill(ds,"Filmy");
16
ADO.NET Kapitola 5
//naplnn datasetu
da.Fill(ds,"Filmy");
17
ADO.NET Kapitola 5
//sputn pkazu
SqlDataReader reader = command.ExecuteReader();
//ukonen ten
reader.Close();
// potvrzen transakce
trans.Commit();
18
Kapitola 6
XML
19
Kapitola 7
20
ADO.NET Kapitola 7
Ukzka kdu (naplnn objektu typu DataSetu pomoc objektu typu DataA-
dapter):
sqlDataAdapter1.Fill(dataSet1);
21
ADO.NET Kapitola 7
7.4 DataSet
DataSet opt nalezneme na palet Data lity ToolBox.
7.5 DataView
Komponentu DataView najdeme stejn jako pedchzejc komponenty na palet
Data. Tato komponenta nm umouje vybrat data z DataSetu podle rznch
filtrovacch dotaz.
7.6 DataGrid
DataGrid je jedin vizuln komponenta, kterou si v tto pruce pedstavme.
Komponentu nenalezneme na palet Data, nbr na palet Windows Forms. Jde
o datovou tabulku, kter reprezentuje data vizuln stejnm zpsobem jako jsou
data uloena v databzi. DataGrid me zobrazovat data uloen v komponen-
tch DataSet nebo DataView.
22
Kapitola 8
Zvr
23
Ploha A
vod do MSDE
24
ADO.NET Ploha A
Pro tento pklad budeme pedpokldat, e kad film m uniktn nzev. Do ta-
bulky vlome jeden zznam nsledujcm SQL dotazem: INSERT INTO Filmy
VALUES(X-Files, 1998);. Dotazem SELECT * FROM Filmy; se pesvdme,
e je nae testovac tabulka s daty vytvoena.
25
Literatura
[1] Simon Robinson, K. Scott Allen, Ollie Cornes, Jay Glenn, Zach Greenvoss,
Burton Harvey, Christian Nagel, Morgan Skinner, Karli Watson, 2003. C#
Programujeme profesionln, Wrox, Computer Press.
[2] Dalibor Kam, 2001. Programujeme .NET aplikace ve Visual Studiu .NET,
Computer Press.
[3] Luboslav Lacko, 2003. SQL Hotov een, Computer Press.
26