Jazyk C# - přístup k datům



Podobné dokumenty
Jazyk C# - přístup k datům

Jazyk C# a platforma.net

Jazyk C# - přístup k datům

Jazyk C# a platforma.net

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Objekty jako zapozdření dat. začneme vytvářet vlastní objekty a třídy

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Programování v jazyku C# II. 5.kapitola

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Databázové systémy úvod

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Pokročilá práce s proměnnými

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Programování v jazyce JavaScript

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

Tvorba informačních systémů

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Databázové systémy. Cvičení 6: SQL

Použití databází na Webu

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Programování v jazyce JavaScript

Komponenty v.net. Obsah přednášky

Úvod do databázových systémů

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

4IT218 Databáze. 4IT218 Databáze

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Java a Caché IV: Manipulace s objekty

KIV/ZIS cvičení 6. Tomáš Potužák

LINQ. (Language integrated query) Prezentace na 3IT353. Zpracovali: Martin Latiak, Michal Pěnka, Petr Spurný

Semestrální práce z DAS2 a WWW

Nové prvky v C# 3.0. David Keprt

ISZR Referenční agent.net

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Michal Krátký, Miroslav Beneš

Databáze SQL SELECT. David Hoksza

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Object-relational mapping (JPA, Hibernate)

Databázové a informační systémy

Programování v jazyce JavaScript

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

KTE / ZPE Informační technologie

Mělká a hluboká kopie

8.2 Používání a tvorba databází

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

ISZR Referenční agent.net

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Návrh a tvorba WWW stránek 1/14. PHP a databáze

1. Téma 12 - Textové soubory a výjimky

Metodický list k didaktickému materiálu

SQL - trigger, Databázové modelování

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

UŽIVATELSKÉ ROZHRANÍ WINDOWS-FORM DESKTOPOVÉ APLIKACE - CVIČENÍ

Virtual Private Database (VPD) Jaroslav Kotrč

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Programování v jazyce JavaScript

Virtuální privátní databáze

PHP a Large Objecty v PostgreSQL

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Konfigurátor počítačových sestav a spotřební elektroniky

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Větvení programů příkaz IF

Architektura softwarových systémů

Nejzajímavější jsou události MouseDown a KeyDown.

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Perly code-review z praxe

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

KIV/ZIS cvičení 5. Tomáš Potužák

Zápis programu v jazyce C#

Programování v jazyce JavaScript

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Metodický list k didaktickému materiálu

Programování v jazyce JavaScript

Transkript:

Jazyk C# - přístup k datům Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Entity Framework BI-PCS Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 1/7

// Entity Framework je nejnovejsi technologie firmy MS pro tvorbu aplikaci, // ktere pracuji nad databazemi. (U MS se zjevne inspirovali projektem // NHibernate.) EF je vybudovan nad infrastrukturou ADO.NET, vykladaneho // v predchozi casti. Program v EF je mozno navrhnou tremi zpusoby. Bud se (vizualnimi nastroji EF) navrhne objektovy model aplikace a z neho se generuje jednak vlastni databaze a vazby mezi modelem a databazi. Druha moznost je vyjit z existujici database, z ni (vizualnimi nastroji) vytvorit objektovy model a vazby. Nejnoveji lze pouzit definice trid v programu a z nich generovat model a vazby using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; // pridano (nektere reference budou pridany az po vytvoreni modelu) using System.Data.Objects; using System.Data.Objects.DataClasses; using System.Data.Common; namespace CourseManager { public partial class Form1 : Form { public Form1() { InitializeComponent(); Entity model (soubor School.edmx) byl vytvoren z databáze vizualnimi nastroji Visual Studia.edmx obsahuje XML popisy> - entitniho modelu (cast CSDL - conceptual schema definition language) - databaze ci jineho uloziste (cast SSDL - store schema definitiv language) - mapovani mezi nimi (cast MSL - mapping specification language) private SchoolEntities schoolcontext; P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 2/7

private void Form1_Load(object sender, EventArgs e) { // inicializace ObjectContext schoolcontext = new SchoolEntities(); // pridani objektu do Engeneering schoolcontext.courses.addobject(course.createcourse(123, "Muj kurz",3,1)); // prime poslani SQL Commandu na podkladovou databazi!!!! // schoolcontext.executestorecommand( // "Insert Into dbo.course (...) values(...)"); // dotaz pro Entity Framework, ktery vraci vsechny objekty // Department a Courses, setridene podle jmena var departmentquery = from d in schoolcontext.departments.include("courses") orderby d.name select d; // vrati SQL, odesilana na DB txtsql.text = ((ObjectQuery)departmentQuery).ToTraceString(); try { // Navazeme (bind) combobox na definovanou query, ktera je // provedena behem faze data binding. // Aby se predeslo vicenasobnemu vykonavani query behem // bindingu,doporucuje se provadet binding controlu na vystupy // metody Execute departmentlist.displaymember = "Name"; departmentlist.datasource = ((ObjectQuery)departmentQuery).Execute(MergeOption.AppendOnly); catch (Exception ex) { MessageBox.Show(ex.Message); private void closeform_click(object sender, EventArgs e) { this.close(); // zavreni formu schoolcontext.dispose(); // uvolneni kontextu private void departmentlist_selectedindexchanged(object sender, EventArgs e) { // nacteme objekt pro zvoleny department Department department = (Department)departmentList.SelectedItem; // navazani DataGridu na kolekci objektu Course pro // vybrany object Department coursegridview.datasource = department.courses; P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 3/7

// Skryti sloupecku vazanych na navigacni vlastnosti objektu Course coursegridview.columns["department"].visible = false; coursegridview.columns["studentgrades"].visible = false; coursegridview.columns["onlinecourse"].visible = false; coursegridview.columns["onsitecourse"].visible = false; coursegridview.columns["people"].visible = false; coursegridview.columns["departmentid"].visible = false; coursegridview.allowusertodeleterows = false; coursegridview.autoresizecolumns( DataGridViewAutoSizeColumnsMode.AllCells); private void savechanges_click(object sender, EventArgs e) { try { schoolcontext.savechanges(); // ulozeni zmen do DB MessageBox.Show("Zmeny ulozeny"); this.refresh(); catch (Exception ex) { MessageBox.Show(ex.Message); private void btndotaz_click(object sender, EventArgs e) { // metody, vytvarejici Entity SQL: // vsechny kurzy // ObjectQuery<Course> query = schoolcontext.courses; // vykonani dotazu pouzitim v cyklu foreach txtvystup.clear(); foreach (Course polozka in query) { // lze pouzit i typ var txtvystup.text += polozka.courseid + "; " + polozka.title + "\r\n"; // zvoleni dotazem vypisovanych vlastnosti (sloupecku). // Pozor - vraci JINY typ (DbDataRecord) - ne Course! // Musi byt pridano using System.DataCommon; // ObjectQuery<DbDataRecord> query = schoolcontext.courses.select("it.courseid,it.title"); // it - odkaz na aktualni ObjectQuery; je mozno pouzit v // nasledujici ObjectQuery v retezu // (dotazy lze aplikovat sekvencne - dotaz na vysledek dotazu) P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 4/7

// podminka: // ObjectQuery<Course> query = schoolcontext.courses.where("it.departmentid == 1"); // misto it lze ObjectQuery explicite pojmenovat: ObjectQuery<Course> queryzaklad = schoolcontext.courses; queryzaklad.name = "kurzy"; ObjectQuery<Course> query = schoolcontext.courses.where("kurzy.departmentid==1"); // dotazy mozno parametrizovat: // ObjectQuery<Course> query = // schoolcontext.courses.where("it.departmentid == @did", // new ObjectParameter("dID",1)); // parametr je samozrejme mozno nastavit i mimo dotaz: ObjectParameter param = new ObjectParameter("dID", typeof(int)); //... ObjectQuery<Course> query = schoolcontext.courses.where("it.departmentid == @did", param); //... param.value = 1; // vyuziti navigacni vlastnosti - ("join") // Courses - navigacni vlastnost (kolekce pointeru na kurzy // daneho departmentu) ObjectQuery<DbDataRecord> query = schoolcontext.departments.select("it.departmentid, it.name, it.courses"); // lze i where txtvystup.clear(); // MergeOption.AppendOnly - jiz nactene hodnoty vzit z kontextu foreach (DbDataRecord rec in query.execute(mergeoption.appendonly)){ // zobrazit cislo a nazev departmentu: txtvystup.text += String.Format("{0; {1\r\n", rec[0], rec[1]); List<Course> list = rec[2] as List<Course>; foreach (Course kurz in list) { txtvystup.text += String.Format( " KurzID: {0, Nazev: {1\r\n", kurz.courseid, kurz.title); P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 5/7

// sort vysledku dotazu ObjectQuery<Course> query = schoolcontext.courses.orderby("it.title"); grdoutput.datasource = query; // lze i execute // zakazat nasledujici radky pro priklad s DbDataRecord grdoutput.columns["department"].visible = false; grdoutput.columns["studentgrades"].visible = false; grdoutput.columns["onlinecourse"].visible = false; grdoutput.columns["onsitecourse"].visible = false; grdoutput.columns["people"].visible = false; grdoutput.columns["departmentid"].visible = false; txtsql.text = query.totracestring(); P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 6/7

// Objektovy model, vytvoreny vizualnimi nastroji Entity Frameworku P. Štěpán Jazyk C# - přístup k datům BI-PCS, výpis 10 7/7