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

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

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

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

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

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

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

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

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

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

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

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

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

Použití databází na Webu

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

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

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

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

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

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

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

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

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

Informační systémy ve zdravotnictví. 6. cvičení

NÁVRH A TVORBA HUDEBNÍ DATABÁZE

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

Sada 1 - PHP. 14. Úvod do jazyka SQL

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

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

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

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

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

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

Databázové systémy úvod

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Michal Krátký, Miroslav Beneš

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

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

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

Databáze I. Přednáška 4

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

PG 9.5 novinky ve vývoji aplikací

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

Databáze SQL SELECT. David Hoksza

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

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

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

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

Databázové a informační systémy Jana Šarmanová

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

Základy relačních databází, jejich využití v programování webu

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

Databázové systémy a SQL

Informační systémy ve zdravotnictví. 8. cvičení

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

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

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

Databázové systémy I

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Úvod do databázových systémů 3. cvičení

Databáze I. 1. přednáška. Helena Palovská

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. Datová integrita + základy relační algebry. 4.přednáška

PHP a Large Objecty v PostgreSQL

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

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

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

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

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Optimalizace dotazů a databázové transakce v Oracle

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Tvorba informačních systémů

Databázové systémy I

Vkládání, aktualizace, mazání

Databázové systémy a SQL

Informační systémy ve zdravotnictví. 10. cvičení

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

ADO.NET Objekt Command (online scenář)

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

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

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

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

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

Verzování a publikace dat na webu za pomoci PostgreSQL

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Stopařův průvodce po ADO.NET a LINQ aneb Foxařův průvodce po práci s daty v.net Milan Kosina

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

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

Základní přehled SQL příkazů

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Návod k aplikaci SQL Tools v.2.3

INDEXY JSOU GRUNT. Pavel Stěhule

Přizpůsobení JSTL pro Google App Engine Datastore

Operátory ROLLUP a CUBE

Osnova je orientační pro FIT, u FEKTu se dá předpokládat, že budou zohledněny předchozí znalosti studentů, kde většina s databází nikdy přímo

Virtuální privátní databáze

Transkript:

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

Reakce na úkoly (1/3) Špatná zarážka v MergeSortu L[n1] = new Student() { OsCislo = "", Jmeno = "", Prijmeni = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ", //zde by měl byt maxstring, řetězec s hodně Z by ale měl stačit UserName = "", Rocnik = 0, OborKomb = "", ; Zbytečně složité LINQ dotazy (Nepoužití Any(), First(),... ) Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 2 / 13

Reakce na úkoly (2/3) Rychle napsaný a funkční kód var studenti = ReadonlyDB.Students; var prijmenistudentu = new string[studenti.length]; var i = 0; foreach (var student in studenti) prijmenistudentu[i++] = student.prijmeni; Array.Sort(prijmeniStudentu); // Tady se deje magie - nechce se mi pro to delat funkce var sortedstudenti = new Student[studenti.Length]; var pozice = 0; foreach (var prijmeni in prijmenistudentu) { var alreadyassined = false; foreach (var student in studenti) { if (alreadyassined) continue; if (prijmeni!= student.prijmeni) continue; sortedstudenti[pozice++] = student; alreadyassined = true; // Tady se deje magie - nechce se mi pro to delat funkce Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 3 / 13

Reakce na úkoly (3/3) i = 0; var pocet = 0; var finalstudenti = new Student[10]; for (var k = 0; k < 10; k++) finalstudenti[k] = new Student(); foreach (var prijmeni in prijmenistudentu) { if (i < 5) { i++; continue; foreach (var student in studenti) { if (student.prijmeni!= prijmeni) continue; if (pocet < 10 && finalstudenti[pocet].jmeno!= student.jmeno) { finalstudenti[pocet++] = student; Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 4 / 13

Databáze úvod = (ve stručnosti) persistentní úložiště dat Neřešíme konkrétní implementaci databáze, zajímá nás rozhraní SQL(Structured Query Language) dotazovací jazyk, různé mutace Zde v kurzu MSSQL Data v tabulkách, každý sloupec pevný datový typ Řádky objekty, Sloupce vlastnosti objektů Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 5 / 13

Databáze vytvoření MSSQL Express zdarma (určitý limit paměti, jader) Správa MS SQL Server Management Studio Možnost testovat na database.inf.upol.cz Integrace ve Visual Studiu Server Explorer Database Connection Alternativa MS SQL Server Database File Databáze v souboru.mdf Snadno přenositelné Pro nás postačující Pro připojení k DB slouží tzv. Connection string (k nahlédnutí v Properties) Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 6 / 13

SQL (1/3) Základní dotazy Výběr dat SELECT sloupec1, sloupec2 FROM tabulka WHERE podminka; Např.: SELECT name, surname FROM students WHERE year=3; SELECT * FROM subjects WHERE name = Jan ; Řazení SELECT name, surname FROM students ORDER BY surname DESC; SELECT * FROM subjects WHERE obor = KMI ORDER BY year ASC; Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 7 / 13

SQL (2/3) Základní dotazy Editace záznamu UPDATE tabulka SET sloupec1=hodnota1, sloupec2=hodnota2 WHERE podminka; Např.: UPDATE students SET year=3, obor = MI WHERE year=3; UPDATE subjects SET name= XXXXXX ; Vložení záznamu INSERT INTO tabulka (sloupec1, sloupec2,...) VALUES (hodnota1, hodnota2,...); Např.: INSERT INTO students (name, surname) VALUES ( Petr, Novák ); Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 8 / 13

SQL (3/3) Základní dotazy Smazání záznamu DELETE FROM tabulka WHERE podminka; Např.: DELETE FROM students WHERE id=35; DELETE FROM students; Další dotazy (GROUP BY, CREATE TABLE, JOIN,... ) viz. dokumentace https://technet.microsoft.com/en-us/library/ms189826(v=sql.90).aspx Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 9 / 13

Připojení DB v C# Třída System.Data.SqlClient Připojení a čtení výsledků dotazu try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.open(); SqlCommand command = new SqlCommand("SELECT * FROM students;", conn); using (SqlDataReader dr = command.executereader()) { while (dr.read()) { Console.WriteLine($"{dr[0], {dr[1], {dr[2]"); catch (Exception e) {... Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 10 / 13

Dotaz s parametry Proč je špatně: SqlCommand command = new SqlCommand($"SELECT * FROM students WHERE name= {somename OR surname= {somesurname ;", conn); A správně SqlCommand command = new SqlCommand("SELECT * FROM students WHERE name = @someparam OR surname=@surname", conn); command.parameters.add(new SqlParameter("someParam", "Karel")); command.parameters.add(new SqlParameter("surname", "Novák")); Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 11 / 13

Vyhodnocení dotazu bez výsledků Metoda ExecuteNonQuery() vrací počet ovlivněných prvků Vložení prvku SqlCommand command = new SqlCommand("INSERT INTO students (id, name, surname) VALUES (@id, @name, @surname);", conn); command.parameters.add(new SqlParameter("id", 3)); command.parameters.add(new SqlParameter("name", "Alois")); command.parameters.add(new SqlParameter("surname", "Fridrich")); int affected = command.executenonquery(); Vymazání prvku(ů) SqlCommand command = new SqlCommand("DELETE FROM students WHERE surname=@srn", conn); command.parameters.add(new SqlParameter("srn", "Odstrčil")); int affected = command.executenonquery(); Console.WriteLine("Affected: " + affected); Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 12 / 13

Úkol Stáhnout soubor students.mdf z mých stránek, připojit ve VS a zjistit connection string Z databáze vytáhnout abecedně vzestupně setřízené osoby dle příjmení a vypsat 10 unikátních dvojic jmen a příjmení, které jsou 5. - 15. v pořadí Vložit dva nové studenty (smysluplná data) Vymazat studenty, kteří studují aplikovanou informatiku Změnit userid studenta s OsČíslem R15369 na kaufal01 Pro zbylé studenty zjistit jejich známky ze všech zkoušek Při řešení co nejvíce použít SQL Vše vypsat do konzole v pořadí úkolů a ošetřit sql chyby odchycením výjimek Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 13 / 13