Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
B I T M A N 1/74 B I T M A N v: 2015.04.11
10. Gy: DotNet - C#
Adatbázis Rendszerek II.
B I T M A N 2/74
Témakörök
Kapcsolat nélküli adatelérés
Oracle kapcsolódás
C# jellegzetességek
Kapcsolat alapú adatelérés
B I T M A N 3/74
Adatbázis-kezelés C#-ban
A .NET környezet lehetőséget biztosít számos adatbázis-típushoz
való kapcsolódásra, ezekhez különböző motorokat biztosít.
Többféle osztály használata szükséges:
– Kapcsolat: ez adatbázis-típusfüggő osztály, amelynek
segítségével a program kapcsolódik egy adatbázishoz (pl.
OleDbConnection, OracleConnection, stb.)
– Adattárolók: olyan osztályok, amelyek az adatbázisból betöltött
adatot tárolják
– Adat adapterek: az adatokat mozgatják az adatbázis és a tárolók
között
– Parancs: ez az osztály az adatok manipulációját teszi lehetővé
(pl. úgy, hogy értelmez és alkalmaz egy SQL utasítást)
– Navigáció: az adatok közötti mozgást és manipulációt
megkönnyítő osztály
B I T M A N 4/74
Adatbázisok elérése
Közvetlen elérés - minden adatbázismotorhoz külön
függvénygyűjtemény
Absztrakciós rétegen keresztül
– Open DataBase Connectivity (ODBC), közös függvényhalmaz,
amivel minden DB elérhető. Az ODBC rétegben levő driverek
lefordítják.
– Object Linking and Embedding (OLE DB) –kifelé táblázatos
formában mutatja az adatokat. Az adatforrások OLE DB
provider-eken keresztül érhetők el COM objektumok
segítségével. ODBC-t is elér.
– ActiveX Data Objects (ADO) – egy vékony réteg az OLE DB
felett, a magas szintű nyelvek számára elérhetővé teszi azt.
– ADO.NET – ADO továbbfejlesztett, felügyelt változata
B I T M A N 5/74
Kétféle adatelérési modell
Kapcsolat alapú (Direct Access)
pl: DataReader, DataCommand
Kapcsolat nélküli (Disconnected
Access)
pl: DataSet (és a többiek)
- Egyirányú, csak olvasható
- Ha az adatokat azonnal
feldolgozzuk
- Lokális másolat az adatokról
- Ha az adatok között navigálunk
- Ha az adatokat módosítjuk is
Előnyök:
- Egyszerűbb konkurencia kezelés
- Az adatok mindenhol a
legfrissebbek
Hátrányok:
- Folyamatos hálózati kapcsolat
Előnyök:
- Nem szükséges folyamatos
hálózati kapcsolat
Hátrányok:
- Ütközések lehetségesek
- Az adatok nem mindenhol a
legfrissebbek
B I T M A N 6/74
SQL Server
ADO.NET – Kapcsolat alapon (online)
Az erőforrások a kapcsolat
bontásáig foglaltak
Lépések:
1. Kapcsolat nyitása
2. Parancs futtatása
3. Sorok feldolgozása
4. Olvasó bezárása
5. Kapcsolat bezárása
SqlConnection
SqlCommand
SqlDataReader
B I T M A N 7/74
Az erőforrások az adat feldolgo-
zása alatt nincsenek lefoglalva
Lépések:
1. Kapcsolat nyitás
2. DataSet feltöltés
3. Kapcsolat bontás
4. DataSet feldolgozás
5. Kapcsolat nyitás
6. Adatforrás frissítése
7. Kapcsolat bontás
SqlConnection
SqlDataAdapter
DataSet
SQL Server
ADO.NET – Kapcsolat nélkül (offline)
B I T M A N 8/74
Data Provider
Híd az alkalmazás és az adatforrás között, ezen
keresztül mozognak az adatok az alkalmazás és az
adatbázis között
Microsoft DP-k
– SqlClient (MS SQL Server)
– OracleClient (Oracle)
– OleDb (Access)
– Odbc
Más cégektől (letöltés, telepítés)
B I T M A N 9/74
Data Provider komponensek
XxxConnection
– XxxTransaction
– XxxException
– XxxError
XxxCommand
– XxxParameter
XxxDataReader
XxxDataAdapter
XxxPermission
SqlConnection
MySqlConnection
OracleConnection
OdbcConnection
OleDbConnection
B I T M A N 10/74
Témakörök
Kapcsolat nélküli adatelérés
Oracle kapcsolódás
C# jellegzetességek
Kapcsolat alapú adatelérés
B I T M A N 11/74
Kapcsolat alapú adatelérés
Lépések:
– Kapcsolati sztring összeállítása
– Kapcsolat létesítése az adatbázishoz Connection
objektum segítségével
– SQL lekérdezés sztring összeállítása
– Kapcsolat megnyitása
– Command objektum létrehozása
– DataReader objektum létrehozása
– Rekordok kiolvasása
– DataReader objektum lezárása
– Kapcsolat lezárása
B I T M A N 12/74
Kapcsolódás MySql adatbázishoz (előkészületek)
Előkészületek
– A szükséges csomag letöltése:
• http://dev.mysql.com/downloads/connector/net/
• mysql-connector-net-6.9.6.msi (2015.04.09)
– Installálás: a Programfájlok(x86) mappába kerül:
B I T M A N 13/74
Kapcsolódás MySql adatbázishoz (előkészületek)
A Visual Studio indítása
Új Projekt létrehozása
1
2
3
4
B I T M A N 14/74
Kapcsolódás MySql adatbázishoz (előkészületek)
A View menüben jelenítsük meg a Solution Explorert.
B I T M A N 15/74
Kapcsolódás MySql adatbázishoz (előkészületek)
A Solution Explorerben kattintsunk jobb egérgombban a
References menüre, és válasszuk az Add Reference-t.
B I T M A N 16/74
Kapcsolódás MySql adatbázishoz (előkészületek)
A Browse gombbal jelenítsük meg a Select the files to
reference panelt, keressük ki a MySql.Data.dll fált, és az
Add gombbal adjuk hozzá a projekthez.
1
2
3
4
B I T M A N 17/74
Kapcsolódás MySql adatbázishoz (A kód megírása)
A kód elejére írjuk be: using MySql.Data.MySqlClient;
B I T M A N 18/74
Kapcsolódás MySql adatbázishoz (Kódrészletek)
MySqlConnection conn = null;
string cs = @"server=localhost; userid=root;
password=root; database=bolt";
conn = new MySqlConnection(cs);
conn.Open();
Console.WriteLine("MySQL kapcsolat rendben!");
if (conn != null) { }
conn.Close();
B I T M A N 19/74
Kapcsolódás MySql adatbázishoz (A kód)
B I T M A N
B I T M A N 20/74
Kapcsolódás MySql adatbázishoz (A kód fordítása)
2 1
B I T M A N 21/74
Kapcsolódás MySql adatbázishoz (A projekt helye)
A megírt programot a Dokumentumok alatt, a Visual
Studio 2013\Projects\Projectnév mappában találjuk, .cs
kiterjesztéssel.
B I T M A N 22/74
Kapcsolódás MySql adatbázishoz (A futtatható kód)
A futtatható .exe kód a Projektnév\bin\Debug mappában
található, innen futtatható egy Parancssor ablakban.
B I T M A N 23/74
Kapcsolódás MySql adatbázishoz (A kód futtatása)
B I T M A N 24/74
A kategória tábla listája (Kódrészletek)
MySqlDataReader rdr = null;
string stm = "select * from kategória";
MySqlCommand cmd = new MySqlCommand(stm, conn);
rdr = cmd.ExecuteReader();
while (rdr.Read()){
Console.WriteLine(rdr.GetString(0) + ": " + rdr.GetString(1));
}
B I T M A N 25/74
A kategória tábla listája (A kód)
B I T M A N
B I T M A N 26/74
A kategória tábla listája (A kód futtatása)
B I T M A N 27/74
Statikus beszúrás a táblába (Kódrészletek)
Console.Write("Kérem a kategória kódját: ");
string kod = Console.ReadLine();
string stm = "Insert into Kategória Values (' "+kod+" ', ' "
+nev+" ')";
MySqlCommand cmd = new MySqlCommand(stm, conn);
cmd.ExecuteNonQuery();
B I T M A N 28/74
Statikus beszúrás a táblába (A kód)
B I T M A N
B I T M A N 29/74
Statikus beszúrás a táblába (A kód futtatása)
B I T M A N 30/74
Kétlépcsős beszúrás a táblába (Kódrészletek)
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Kategória
VALUES(@Kód, @Név)";
cmd.Prepare();
string kod = Console.ReadLine();
string nev = Console.ReadLine();
cmd.Parameters.AddWithValue("@Kód", kod);
cmd.Parameters.AddWithValue("@Név", nev);
cmd.ExecuteNonQuery();
B I T M A N 31/74
Kétlépcsős beszúrás a táblába (A kód)
B I T M A N
B I T M A N 32/74
Kétlépcsős beszúrás a táblába (A kód futtatása)
B I T M A N 33/74
Bolt – Tárolt eljárás
KatNevMod nevű tárolt eljárás, mely módosítja egy
paraméterként megadott kódú kategória nevét.
DELIMITER //
CREATE PROCEDURE KatNevMod (in kk char(3), in kn
varchar(20))
BEGIN
Update Kategória set Név= kn where kkód= kk;
END; //
DELIMITER ;
CALL KatNevMod(′k01′, ′Élelmiszer′);
B I T M A N 34/74
KatNevMod eljárás létrehozása (A kód)
B I T M A N
B I T M A N 35/74
KatNevMod eljárás futtatása (Kódrészletek)
MySqlCommand cmd =
new MySqlCommand("KatNevMod", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@kk", "k01");
cmd.Parameters["@kk"].Direction =
ParameterDirection.Input;
cmd.ExecuteNonQuery();
B I T M A N 36/74
KatNevMod eljárás futtatása (A kód)
B I T M A N
B I T M A N 37/74
Bolt – Tárolt függvény
Bevetel nevű tárolt függvény, mely megadott nap bevételét adja vissza.
DELIMITER //
CREATE FUNCTION Bevetel (ip varchar(15)) returns int
BEGIN
DECLARE bev int default 0;
set ip = Concat(ip,’%’);
select sum(Ár*Darab) into bev from Termék T inner join
Vásárlás V ON T.Tkód=V.Tkód where időpont like ip;
RETURN bev;
END; //
DELIMITER ;
SELECT Bevetel(′2013-03-21′);
B I T M A N 38/74
A Bevetel függvény létrehozása (A kód)
B I T M A N
B I T M A N 39/74
A Bevetel függvény futtatása (Kódrészletek)
MySqlDataReader rdr = null;
Console.Write("Kérem a dátumot: ");
string datum = Console.ReadLine();
string stm = "SELECT Bevetel(' "+datum+" ');";
MySqlCommand cmd = new MySqlCommand(stm, conn);
rdr = cmd.ExecuteReader();
while (rdr.Read()) {
Console.WriteLine("A "+datum+".-i bevétel: "+rdr.GetString(0));
}
B I T M A N 40/74
A Bevetel függvény futtatása (A kód)
B I T M A N
B I T M A N 41/74
Témakörök
Kapcsolat nélküli adatelérés
Oracle kapcsolódás
C# jellegzetességek
Kapcsolat alapú adatelérés
B I T M A N 42/74
Kapcsolat nélküli adatelérés
Lépések:
– Kapcsolati sztring összeállítása
– Kapcsolat létesítése az adatbázishoz Connection
objektum segítségével
SQL parancsok összeállítása
– DataAdapter objektum(ok) létrehozása
– DataSet objektum(ok) létrehozása
– Adatok bemásolása a DataSet-be (DataTable) a Fill()
metódus meghívásával (automatikus kapcsolódás)
B I T M A N 43/74
Grafikus kitérő – Kapcsolódás (előkészületek)
A Visual Studio indítása
Új Projekt létrehozása
1
2
3
5
4
B I T M A N 44/74
Grafikus kitérő – Kapcsolódás (előkészületek)
A View menüben jelenítsük meg a Solution Explorert.
B I T M A N 45/74
Grafikus kitérő – Kapcsolódás (előkészületek)
A Solution Explorerben kattintsunk jobb egérgombban a
References menüre, és válasszuk az Add Reference-t.
Adjuk a projekthez a MySql.Data.dll providert.
1
2
3
4
B I T M A N 46/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Jelenítsük meg a Toolboxot (View\Toolbox)
Adjunk a projekthez egy nyomógombot.
B I T M A N 47/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Írjuk át a nyomógomb feliratát Kapcsolódás-ra.
B I T M A N 48/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Adjunk a panelhez egy feliratot (Toolbox\Label).
B I T M A N 49/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Kattintsunk duplán a Kapcsolódás gombra, így megjelenik
a kód. Egészítsük ki a megjelölt sorokkal a kódot.
B I T M A N
B I T M A N 50/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Mentsük le, fordítsuk le, és futtassuk le a programot.
1 2
3
4
B I T M A N 51/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Készítsünk egy Lekapcsolódás gombot is.
B I T M A N 52/74
Grafikus kitérő – Kapcsolódás (A panel kialakítása)
Kattintsunk duplán a Lekapcsolódás gombra, így
megjelenik a kód. Egészítsük ki a kódot.
B I T M A N
B I T M A N 53/74
Grafikus kitérő – Kapcsolódás (Próba)
Mentés, fordítás, futtatás.
Kész az első Windowsos, adatbázis-kezelős programunk.
1 2 3
B I T M A N 54/74
DataSet létrehozása (Panel kialakítása)
Készítsünk egy táblázatot, melyben megjelennek a
Kategória tábla adatai.
Adjunk panelünkhöz egy DataGridView komponenst!
B I T M A N 55/74
DataSet létrehozása (A kód módosítása)
Módosítsuk a Kapcsolódás gomb kódját:
B I T M A N 56/74
DataSet létrehozása (A program futtatása)
Mentés, fordítás, futtatás:
B I T M A N 57/74
Működő DataSet készítése (Az elv)
Betöltés:
– Kapcsolódás
– DataSet létrehozása
– Adatok táblázatos megjelenítése
– Lekapcsolódás
Módosítások: (insert, delete, update a DataSetben)
Kiírás:
– Kapcsolódás
– Módosítások kiírása
– Lekapcsolódás
B I T M A N 58/74
Működő DataSet készítése (A panel átalakítása)
Írjuk át a két nyomógomb feliratát!
B I T M A N 59/74
Működő DataSet készítése (Kódrészletek)
MySqlCommandBuilder builder = null;
MySqlDataAdapter da = new MySqlDataAdapter();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
da.SelectCommand = new MySqlCommand("Select * from Kategoria", conn);
builder = new MySqlCommandBuilder(da);
da.Fill(ds);
dt = ds.Tables[0];
dataGridView1.DataSource = dt;
builder.GetUpdateCommand();
da.Update(dt); B I T M A N
Deklarációk
Beolvasás
Kiírás
B I T M A N 60/74
Működő DataSet készítése (A kód módosítása)
B I T M A N 61/74
Működő DataSet készítése (A kód módosítása)
B I T M A N 62/74
Működő DataSet készítése (A kód módosítása)
B I T M A N 63/74
Működő DataSet készítése (A kód)
B I T M A N 64/74
Témakörök
Kapcsolat nélküli adatelérés
Oracle kapcsolódás
C# jellegzetességek
Kapcsolat alapú adatelérés
B I T M A N 65/74
Oracle kapcsolódás (Előkészületek)
A Visual Studio indítása
Új Projekt létrehozása
1
2
3
5
4
B I T M A N 66/74
Oracle kapcsolódás (Előkészületek)
Rakjunk két nyomógombot, és egy Label-t a panelre.
B I T M A N 67/74
Oracle kapcsolódás (A kód I.)
Kattintsunk duplán a Kapcsolódás gombra, és írjuk meg
a kódját. A ConnectionString (cs) még hiányos!
B I T M A N 68/74
Oracle kapcsolódás (ConnectionString I.)
Készítsük el a
ConnectionString-et!
Tools\Connect to Database
Válasszuk ki, írjuk be az
adatokat!
Teszteljük a kapcsolatot!
Aztán OK!
1
2
3
4
5 6
B I T M A N 69/74
Oracle kapcsolódás (ConnectionString II.)
Kattintsunk a bal szélen a Database Explorer-re, az
ablakban a MSDAORA.localhost-ra, és jobb alul
megjelenik a ConnectionString.
1
2
3
B I T M A N 70/74
Oracle kapcsolódás (A kód II.)
Másoljuk be a ConnectionString-et a kódba, és
egészítsük ki a jelszóval!
Mentés, fordítás. Működik.
B I T M A N 71/74
Oracle kapcsolódás (A kód III.)
Kattintsunk duplán a Lekapcsolódás gombra, és írjuk
meg a kódját:
Mentés, fordítás, futtatás. Kész!
B I T M A N 72/74
B I T M A N
B I T M A N 73/74
Felhasznált irodalom
Barabás Péter: Adatbázis rendszerek 2.,
elektronikus jegyzet
Johanyák Zsolt Csaba: Adatbázis jegyzetek
Jánosi-Rancz Katalin Tünde: Adatbázisok,
elektronikus jegyzet
Cser Lajos: Adatbázis alapú rendszerek fejlesztése
B I T M A N 74/74
VÉGE V É G E