adatbázis rendszerek ii. -...

Post on 17-Sep-2019

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related