1 / 198

Vizuális programozás

Vizuális programozás. Adatbázisok elérése. Adatbázisok elérése 1. Közvetlen elérés - minden adatbázismotorhoz külön függvénygyűjtemény Absztrakciós rétegen keresztül

Download Presentation

Vizuális programozás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vizuális programozás Adatbázisok elérése

  2. Adatbázisok elérése1 • Közvetlen elérés - minden adatbázismotorhoz külön függvénygyűjtemény • Absztrakciós rétegen keresztül • Open DataBaseConnectivity (ODBC), közös függvényhalmaz, amivel minden DB elérhető. Az ODBC rétegben levő driverek lefordítják. • Object Linking and EmbeddingDataBase (OLE DB) –kifele 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. • Objektum-Relációs Leképezés (ObjectRelationalMapping), a programozó objektumokkal dolgozik J.Zs.Cs.: Vizuális programozás (c) 2014

  3. ODBC ODBC réteg Oracle Driver Oracle MS SQL Driver MS SQL Metódushívás Alkalmazás mySQL Driver MySQL … Driver J.Zs.Cs.: Vizuális programozás (c) 2014

  4. OLE-DB Alkalmazás OLE-DB Consumer OLE-DB Provider Adatforrás specifikus API Adatforrás J.Zs.Cs.: Vizuális programozás (c) 2014

  5. Microsoft/Windows Data Access Components (MDAC/WDAC) J.Zs.Cs.: Vizuális programozás (c) 2014 Kép forrása: http://msdn.microsoft.com/en-us/library/ms810810.aspx

  6. Adatbázisok elérése2 • 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 • LINQ – beágyazott SQL C# 3.0-tól a Cω-ból átvéve • Entity Framework – ORM réteg, .NET 3.5-től J.Zs.Cs.: Vizuális programozás (c) 2014

  7. ADO.NET • A .NET adatbáziskezelési osztálygyűjteménye • Fő névtér: System.Data Jellemzők • Relációs adatok egyszerű elérése: osztályok oszlopok, sorok, táblák, adatbázis leírására • Bővíthető: vannak beépített adatszolgáltatók (dataprovider): MS SQL, Oracle, ODBC, OLE DB és továbbiak beszerezhetők: pl. mySQL • Többrétegű alkalmazások támogatása • Az XML és relációs adatelérés egységesítése • Kapcsolatkészlet fenntartása, adatbáziskapcsolatok újrafelhasználása J.Zs.Cs.: Vizuális programozás (c) 2014

  8. ADO.NET J.Zs.Cs.: Vizuális programozás (c) 2014 Ábra forrása: http://swechhaindia.wordpress.com/author/swechhaindia/page/3/

  9. Többrétegű alkalmazás Presentationtier Megjelenítési réteg • windowsforms • Wpf/XAML • web böngésző (web forms) • konzol Business tier (logic) Üzleti logikai réteg • adatokat feldolgozó szerver • adat objektumok • webszolgáltatások • .net remoting Data tier Adattároló réteg • DBMS • egyéb erőforrások J.Zs.Cs.: Vizuális programozás (c) 2014

  10. Adatelérési modellek • Kapcsolat alapú (Connected Access) – pl. DataCommand, DataReader – ha az adatokat azonnal feldolgozzuk • Kapcsolat nélküli (Disconnected Access) – pl. DataSet – lokális másolat az adatokról J.Zs.Cs.: Vizuális programozás (c) 2014

  11. Kapcsolat alapú adatelérés • Select • Tárolt eljárás Kliens alkalmazás Olvasás DataReader Command Windows Forms, WPF, Konzol, XAML Connection Írás Command • Insert • Update • Delete • Stored procedure Web Forms Adatbázis J.Zs.Cs.: Vizuális programozás (c) 2014

  12. Kapcsolat nélküli adatelérés DataSet DataTable DataTable Update() Fill() DataAdapter TableAdapter SelectCommand SelectCommand UpdateCommand UpdateCommand InsertCommand InsertCommand DeleteCommand DeleteCommand Connection SQL Server J.Zs.Cs.: Vizuális programozás (c) 2014 J.Zs.Cs.: Vizuális programozás (c) 2010 Forrás: Albert István Okos kliens fejlesztése a .NET platformra

  13. Adat objektumokProvider-Consumer modell • Provider: adatforrás specifikus – ezek olvassák és írják az adatforrást • Consumer: közös – ezekkel manipulálható a memóriában levő adat J.Zs.Cs.: Vizuális programozás (c) 2014

  14. 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 • Odbc • Más cégektől J.Zs.Cs.: Vizuális programozás (c) 2014

  15. Telepített DP-k kiíratása DataTabledtDataProviderek = DbProviderFactories.GetFactoryClasses(); stringProviderLista = ""; foreach (DataRowdrProviderek in dtDataProviderek.Rows) { ProviderLista+= (String)(drProviderek.ItemArray[0])+ "\t" + (String)(drProviderek.ItemArray[1]) + "\r\n\r\n"; } Console.WriteLine(ProviderLista); J.Zs.Cs.: Vizuális programozás (c) 2014

  16. Provider osztályok • Connection • Command • DataReader • DataAdapter/TableAdapter J.Zs.Cs.: Vizuális programozás (c) 2014

  17. Connection objektum • A DP egyik komponense • Kapcsolat az adattárhoz, ezen keresztül kommunikál az alkalmazás az adatbázissal • ConnectionString – a kapcsolat beállításai • this.odbcConnection1.ConnectionString = "STMT=;OPTION=3;DSN=Hallgatok;UID=;PASSWORD=;DESC=MySQL ODBC 3.51 Driver DSN;DATAB" +"ASE=Hallgatok;SERVER=localhost;PORT=3306"; • OleDbConnection - ODBCConnection • SQLConnection – Microsoft SQL Server • http://www.connectionstrings.com J.Zs.Cs.: Vizuális programozás (c) 2014

  18. Command objektum • Közvetlen hozzáférés a kapcsolt adatbázis adataihoz • SQL parancsok vagy tárolt eljárások • Az eredmény adatfolyam, amit DataReader olvashat vagy DataSet-be lehet betölteni • Parameters tulajdonság: gyűjtemény, az SQL parancsok vagy tárolt eljárások bemenő és kimenő paraméterei • Command típusok (osztályok) • System.Data.SqlClient.SqlCommand • System.Data.OleDb.OleDbCommand J.Zs.Cs.: Vizuális programozás (c) 2014

  19. DataReader objektum • Gyors, csak előrehaladást engedélyező szerver oldali kurzorhoz hozzáférés • Rekordokat tartalmazó adatfolyamon halad végig • A Command objektum ExecuteReader metódusa egy DataReader-t ad vissza • Az aktuális rekord egyes oszlopaiban tárolt adatokat típusuk szerinti metódusokkal lehet lekérdezni (pl. GetDouble) J.Zs.Cs.: Vizuális programozás (c) 2014

  20. DataAdapter objektum • Híd a tábla és az adatforrás között • Adatbázis parancsok • Adatbázis kapcsolatok • Alap típusok • OleDbDataAdapter • SqlDataAdapter – SQL Serverhez J.Zs.Cs.: Vizuális programozás (c) 2014

  21. TableAdapter • Egy generált osztály típusos DataSet kezeléséhez • Magába foglalja az alábbi objektumokat: • DataAdapter • Connection • Commands • Query • Parameters • Minden táblához külön TableAdapter J.Zs.Cs.: Vizuális programozás (c) 2014

  22. TableAdapterManager • Többtáblás DataSet-eknél kulcs-idegen kulcs kapcsolatok figyelembe vételével oldja meg az adatok mentését • Típusos DataSet-nél automatikusan keletkezik • Hierarchical update • http://msdn.microsoft.com/en-us/library/bb384426%28v=vs.100%29.aspx J.Zs.Cs.: Vizuális programozás (c) 2014

  23. Consumer objektumok • DataSet/típusos DataSet • DataTable/típusos DataTable • DataRow • DataColumn • Relation J.Zs.Cs.: Vizuális programozás (c) 2014

  24. DataSet objektum • Kapcsolat nélküli cache-ben tárol adatokat • Az adatforrás adatainak lokális másolata • Struktúrája egy relációs adatbázishoz hasonló • Táblák, kapcsolatok • A megkötések elsődleges és idegen kulcsokat igényelnek J.Zs.Cs.: Vizuális programozás (c) 2014 J.Zs.Cs.: Vizuális programozás (c) 2010

  25. DataSet felépítése DataSet Tables Table Columns Column Constraints Rows Row Relations Relation J.Zs.Cs.: Vizuális programozás (c) 2014

  26. Típusos DataSet • További absztrakciós szint • Az alap DataSet osztály leszármazottja • Típusellenőrzést tesz lehetővé fordítási időben • Gyorsabb hozzáférést biztosít az adathalmazban levő táblákhoz és rekordokhoz • XML Schema (.xsd) leírás állományokból van generálva az XSD.exe segítségével • Grafikusan (.xss, .xcs) • Hozzáférés táblákhoz és oszlopokhoz • Típus nélküli esetben: dsNév.Tables["TáblaNév"] • Típusos esetben: dsNév.TáblaNév , dsAdatok.dtDolgozatok.HallgatóColumn J.Zs.Cs.: Vizuális programozás (c) 2014 J.Zs.Cs.: Vizuális programozás (c) 2010

  27. Típusos DataSet létrehozásalétező adatbázisból • Pl.: Access adatbázis állomány • (1) Felvesszük a projektbe az adabázis állományt - elindul a varázsló • (2) Data/Add New Data Source … J.Zs.Cs.: Vizuális programozás (c) 2014

  28. J.Zs.Cs.: Vizuális programozás (c) 2014

  29. Automatikusan generált osztályok J.Zs.Cs.: Vizuális programozás (c) 2014

  30. J.Zs.Cs.: Vizuális programozás (c) 2014

  31. Kapcsolat alapú adatbázis elérésLekérdezés • Az eredmény egy szerver oldali kurzorba kerül, abból olvashatunk soronként DataReader segítségével 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 J.Zs.Cs.: Vizuális programozás (c) 2014

  32. Kapcsolat alapú lekérdezés példa J.Zs.Cs.: Vizuális programozás (c) 2014

  33. Kapcsolatalapú adatbáziselérésBeszúrás, Módosítás, Törlés Lépések • Kapcsolat objektum létrehozása • Kapcsolati sztring összeállítása • Kapcsolat létesítése az adatbázishoz Connection objektum segítségével • SQL utasítás sztring összeállítása • Command objektum létrehozása • Kapcsolat megnyitása • SQL parancs végrehajtása ExecuteNonQuery • Kapcsolat lezárása J.Zs.Cs.: Vizuális programozás (c) 2014

  34. Kapcsolat alapú beszúrás példa J.Zs.Cs.: Vizuális programozás (c) 2010 J.Zs.Cs.: Vizuális programozás (c) 2014

  35. Kapcsolat nélküli adatbázis elérés – adatok beolvasása • Kapcsolat létesítése az adatbázissal egy Connection objektum segítségével • Command objektum létrehozása és a Connection objektumhoz kapcsolása • SQL parancsok összeállítása • DataAdapter/TableAdapter/TableAdapterManager objektum(ok) létrehozása • DataSet objektum(ok) létrehozása • Adatok bemásolása a DataSet-be (DataTable) aFill() metódus meghívásával J.Zs.Cs.: Vizuális programozás (c) 2014

  36. Kapcsolat nélküli adatbázis elérés – adatok beolvasása • Egy DS-ben több tábla • Egy DS több különböző forrásból szerezhet adatokat • A DataAdapter vagy TableAdapter objektum Fill() metódusa gondoskodik a kapcsolat megnyitásáról és az adatok letöltéséről J.Zs.Cs.: Vizuális programozás (c) 2014

  37. Kapcsolat nélküli adatbeolvasás példa - típus nélküli DataSet J.Zs.Cs.: Vizuális programozás (c) 2014

  38. Kapcsolat nélküli – adatbeolvasás típusos DataSet-be J.Zs.Cs.: Vizuális programozás (c) 2010 J.Zs.Cs.: Vizuális programozás (c) 2014

  39. Több táblából álló DS – Kapcsolat létrehozása • Az ADO.NET nem állítja elő automatikusan az adatbázis táblái közötti kapcsolatokat a DataSet táblái között • A kapcsolat vizuális eszközökkel Visual Studio 2010-ben is beállítható • Megoldás programból típusos DataSet esetén DataColumn dcElsődlegesKulcs = dsAdatok.dtÉrtékelés.JegyColumn; DataColumn dcIdegenKulcs = dsAdatok.dtDolgozatok.JegyColumn; DataRelation drKapcsolat = new DataRelation("Kapcsolat", dcElsődlegesKulcs, dcIdegenKulcs); dsAdatok.Relations.Add(drKapcsolat); J.Zs.Cs.: Vizuális programozás (c) 2014

  40. Kapcsolat létrehozása vizuális eszközökkel J.Zs.Cs.: Vizuális programozás (c) 2014

  41. Adatlista a kapcsolat felhasználásával J.Zs.Cs.: Vizuális programozás (c) 2014

  42. DS-ben tárolt adatok módosítása1 • Minden cella közvetlenül írható • Sor törlése: meghívjuk DataRow objektum Delete() vagy Remove() metódusát • A Remove() meghívja az AcceptChanges()-t is • Beszúrás: • Új sorobjektum előállítása • Sorobjektum hozzáadása a tábla Rows gyűjteményéhez • A DS tárolja az eredeti és a módosított adatokat • Elfogadás: AcceptChanges() • Visszavonás: RejectChanges() J.Zs.Cs.: Vizuális programozás (c) 2014

  43. DataSet-ben tároltadatok módosítása2 • Rekordhozzáadása • Rekordmódosítása J.Zs.Cs.: Vizuális programozás (c) 2014

  44. DataSet-ben tároltadatokmódosítása3 • Törlés J.Zs.Cs.: Vizuális programozás (c) 2014

  45. Változások érvényesítése az adatbázisban • A DataAdapter/TableAdapter objektum Update() metódusának meghívása • A DataAdapter/TableAdapter elküldi a megfelelő INSERT, UPDATE, DELETE SQL utasításokat • Az SQL utasításokat • a vizuális fejlesztés során automatikusan generálja a fejlesztőrendszer (nem minden adatbázis esetén támogatott, de pl. MS SQL-nél igen) • CommandBuilder objektummal állítjuk elő, de csak egytáblás adatbázisnál működik, és csak akkor, ha van elsődleges kulcs • a programozó írja meg J.Zs.Cs.: Vizuális programozás (c) 2014

  46. LINQ Language INtegrated Query J.Zs.Cs.: Vizuális programozás (c) 2014

  47. LINQ • Cél: egy egységes eszközkészlet objektumokban tárolt adatok (~ toObjects) , XML adatok (~ to XML), relációs adatok (~ toDataSet, ~ to SQL), Entity Framework (L2E) lekérdezésére • Új nyelvi elemek • Lekérdező kifejezések (queryexpressions) • Lekérdező operátorok (query operators) • Erősen típusos kifejezések • .Net keretrendszer ≥ 3.5 J.Zs.Cs.: Vizuális programozás (c) 2014

  48. LINQ to Objects J.Zs.Cs.: Vizuális programozás (c) 2014

  49. Lekérdezések • SQL kifejezésekhez hasonló • A visszatérési érték típusa egyes esetekben fordításkor dől el • Implicit típusok alkalmazása • Előfeltétel: Az adatokat tároló objektum meg kell valósítsa a generikus IEnumerable<T> interfészt • A System.Collections névtér gyűjteményei nem implementálják J.Zs.Cs.: Vizuális programozás (c) 2014

  50. Megoldás • Átalakítás J.Zs.Cs.: Vizuális programozás (c) 2014

More Related