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

Podobné dokumenty
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.

Úvod do Entity Frameworku

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

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

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

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

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

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

Databázové systémy Cvičení 5.2

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);

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

5. POČÍTAČOVÉ CVIČENÍ

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

Vazba ESO9 na MS Outlook a MS Exchange

Použití databází na Webu

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

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

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

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

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

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

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

1 Webový server, instalace PHP a MySQL 13

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

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

Michal Krátký, Miroslav Beneš

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

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

Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech

Databáze v MS ACCESS

KTE / ZPE Informační technologie

RMI Remote Method Invocation

1. Webový server, instalace PHP a MySQL 13

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

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

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databázové systémy Cvičení 5.3

Informace o zaměstnancích v insolvenčním řízení v aplikaci KS mzdy

Virtuální privátní databáze

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

Popis logování v aplikačním serveru

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Object-relational mapping (JPA, Hibernate)

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

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

Jazyk SQL databáze SQLite. připravil ing. petr polách

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu:

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

Databázové systémy Cvičení 5

Databáze SQL SELECT. David Hoksza

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

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

17. července :51 z moravec@yahoo.com

VKLÁDÁNÍ, EDITACE, SPRÁVA ZÁZNAMŮ PUBLIKACÍ V ÚČTU RID POMOCÍ ENDNOTE WEB

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Soubor jako posloupnost bytů

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

Virtual private database. Antonín Steinhauser

PHP a Large Objecty v PostgreSQL

MS SQL Server 2008 Management Studio Tutoriál

Bezpečnost a bezpečné programování

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

Databázové systémy I

zápočtová práce Základy implementace měny BITCOIN v programovacím jazyku C# N_TK Technologie krypto-měn

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

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

Programátorská příručka

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Práce s knihovnami. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

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

Datové struktury. alg12 1

Jazyk C# a platforma.net

UJO Framework. revoluční architektura beans. verze

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

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

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

Semestrální práce z DAS2 a WWW

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

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

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

Informační systém webhostingu

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

12. blok Pokročilé konstrukce SQL dotazů - část II

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Architektura softwarových systémů

Databáze. Logický model DB. David Hoksza

Snadná úprava stránek, nemusím umět HTML, tvořím obsah téměř jako ve Wordu. Jak změnit obsah nástěnky: vpravo nahoře Nastavení zobrazených informací

Metodický list k didaktickému materiálu

Jazyk C# (seminář 5)

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

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

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Enterprise Java Beans 3.0

IRAE 07/08 Přednáška č. 7. Začátek (head)

Transkript:

Základy programování 4 - C# 7. cvičení Radek Janoštík Univerzita Palackého v Olomouci 26.3.2017 Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 1 / 14

Reakce na úkoly (1/2) 2x stejný string s dotazem SqlCommand add = new SqlCommand("INSERT INTO students (OsCislo, Jmeno, Prijmeni, UserNam add.parameters.add(new SqlParameter("OsCislo", "R007")); add.parameters.add(new SqlParameter("Jmeno", "James")); add.parameters.add(new SqlParameter("Prijmeni", "Bond")); add.parameters.add(new SqlParameter("UserName", "JB7")); add.parameters.add(new SqlParameter("Rocnik", 12)); add.parameters.add(new SqlParameter("OborKomb", "APLINF")); int aff = add.executenonquery(); Console.WriteLine($"Affected after adding: {aff"); SqlCommand add2 = new SqlCommand("INSERT INTO students (OsCislo, Jmeno, Prijmeni, UserNa add2.parameters.add(new SqlParameter("OsCislo", "R17002")); add2.parameters.add(new SqlParameter("Jmeno", "Karel")); add2.parameters.add(new SqlParameter("Prijmeni", "Řízek")); add2.parameters.add(new SqlParameter("UserName", "řízkka02")); add2.parameters.add(new SqlParameter("Rocnik", 3)); add2.parameters.add(new SqlParameter("OborKomb", "APLINF")); Kdy tedy použít paramery a kdy je nemusíme použít? Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 2 / 14

Reakce na úkoly (2/2) Nepoužití metod Limitace výstupu přímo v kódu, nikoliv v SQL var i = 0; var command = new SqlCommand("SELECT DISTINCT Jmeno, Prijmeni FROM students ORDER BY Prijmeni ASC;", conn); using (var dr = command.executereader()) { while (dr.read()) { if (i >= 4 && i < 15) Console.WriteLine($"{dr[0], {dr[1]"); i++; vs. SqlCommand ukol1 = new SqlCommand("SELECT DISTINCT Jmeno, Prijmeni FROM students ORDER BY Prijmeni OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY;", conn); Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 3 / 14

Object-relational mapping (ORM) Automatické mapovení objektů do relační databáze Náš pohled transparentní práce s databází pomocí objektů Dva přístupy CodeFirst Databáze se generuje z programu DatabaseFirst Programový kód se generuje dle struktury DB Zde ukážeme pouze CodeFirst Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 4 / 14

Entity Framework První verze (2008) součástí.net Frameworku Od verze 6 (2013) Opensource, mimo.net Framework CodeFirst i DatabaseFirst Líné vyhodnocování Podpora LINQ Podpora MSSQL, Oracle, MySQL,... Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 5 / 14

EF instalace NuGet Package Manager Ruční linkování knihoven pracné (verze, závislosti, hledání knihoven v různých zdrojích) NuGet Package Manager správce balíčků s repozitáři (podobně jako v Linuxu) Pravý klik na projekt Manage NuGet Packages Správa verzí, licencí, závislostí Možno více zdrojů Možno vytvářet vlastní balíčky Balíčky per projekt nebo per solution Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 6 / 14

EF vytvoření modelu = definice tříd, které chceme uchovávat v databázi Pozor na CodeFirst konvence https: //msdn.microsoft.com/en-us/library/jj679962(v=vs.113).aspx např. Property obsahující id bude primární klíč Odkaz na jinou entitu pomocí virtual + Id Např.: public class Student { public int Id {get; set; public string Name {get; set; public int AddressId {get; set; public virtual Address Address {get; set Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 7 / 14

EF vytvoření kontextu Objekt reprezentující připojení k databázi using System.Data.Entity; Předek: DbContext Pro každou entitu DbSet Např.: public class UniversityContext : DbContext { public UniversityContext(string connstringname) : base(connstr { public DbSet<Address> Addresses { get; set; public DbSet<Student> Students { get; set; public DbSet<Subject> Subjects {get; set; Lze dodefinovat názvy sloupců... Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 8 / 14

Připojení databáze Zjištění connection stringu Nastavení connection stringu v konfiguraci aplikace App.config: <configuration> <configsections> </configsections> <connectionstrings> <add name="universityconnection" providername="system.data.sqlclient" connectionstring="data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Something.m </connectionstrings> <startup> <supportedruntime version="v4.0" sku=".netframework,version=v4.5.2" /> </startup> </configuration> Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 9 / 14

Přístup k datům vložení záznamu Vytvoření záznamu try { using (UniversityContext ctx = new UniversityContext("UniversityConnection")) { Address a = new Address() { City = "Olomouc", Street = "17. Listopadu", Number = 14 ; Student s = new Student() { Address = a, Name = "Karel Vomáčka" ; ctx.students.add(s); ctx.savechanges(); catch (Exception e){ Console.WriteLine(e); Vždy potřeba uložit změny ctx.savechanges() Automatické vložení/uložení všech dotyčných entit Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 10 / 14

Přístup k datům čtení dat LINQ dotaz na DbSet try { using (UniversityContext ctx = new UniversityContext("UniversityConnection")) { foreach (Student st in ctx.students.where(p =>p.address.city == "Olomouc" )) { Console.WriteLine($"{st.Name, {st.id"); catch (Exception e) { Console.WriteLine(e); Zobrazení vygenerovaných dotazů: ctx.database.log = Console.WriteLine; Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 11 / 14

Přístup k datům změna dat Pouhá změna property u entity try { using (UniversityContext ctx = new UniversityContext("UniversityConnection")) { Student s = ctx.students.firstordefault(p => p.id == 1); if (s!= null) { s.name = "Bedřich Smetana"; s.subjects.add(ctx.subjects.firstordefault(p => p.name == "VYSL")); ctx.savechanges(); catch (Exception e) { Console.WriteLine(e); Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 12 / 14

Přístup k datům smazání dat Nejdříve najdeme entitu Student s = ctx.students.firstordefault(p => p.id == 1); Poté ji odstraníme ctx.students.remove(s); ctx.savechanges(); Smaže jen tuto entitu, ty které obsahuje nemusí Jde nastavit smazání všech souvisejících, mohou být ale navázány jinam Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 13 / 14

Úkol Navrhnout vhodnou strukturu databázových objektů pro uložení studentů (v rozsahu studentipredmetu.xml z minulých hodin) a jejich známek Vytvořit DB strukturu pomocí CodeFirst Vložit do databáze data studentů a náhodně jim (rozumně) vygenerovat známky Pomocí LINQ dotazů a EntityFrameworku provést všechny úkoly z minulého cvičení: Výběr unikátních jmen a příjmení (5. - 15.), vymazání, editace, výpis studentů se známkami. Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 14 / 14