Zvolte si svoji oblíbenou entitu. Pro inspiraci:
Definujte v C# business objekt vhodný pro tuto entitu. Jeho třída by měla mít anglický název a ten název by měl mít velké počáteční písmeno.
Vytvořte konzolovou aplikaci, která bude umět spravovat databázi vašich business objektů. Implementujte tzv. CRUD metody:
Nezapomeňte na validaci vstupu!!!
Databází se zde myslí textový soubor ve formátu CSV. Po každé změně dat v paměti (operace C, U, D) se tato zapíší do souboru.
Operace CRUD mají velmi blízko k jazyku SQL a úzce s ním souvisí. Aby byla jasnější jejich implementace, uvažujme velmi jednoduchý business objekt Person, který má pouze dvě vlastnosti Name a Age.
public class Person { public string Name { get; set; } public int Age { get; set; } }
V relačních databázích, jako jsou např. MS SQL Server nebo MySQL/MariaDB, je dobré mít u každé tabulky definovaný umělý primární klíč (IDčko), nejlépe typu INT a který se sám inkrementuje při přidání nového řádku.
Tady je definice tabulky PERSON, jak by vypadala v dialektu SQL pro MS SQL Server:
CREATE TABLE PERSON ( ID INT IDENTITY(1,1) NOT NULL, NAME NVARCHAR(50) NOT NULL, AGE INT NOT NULL, CONSTRAINT PK_PERSON PRIMARY KEY ( ID ) );
Každá z operací CRUD pracuje s jediným řádkem tabulky.
Operace CREATE vloží do tabulky nový řádek. V jazyce SQL použijeme INSERT. Takže například:
INSERT INTO PERSON ( NAME, AGE ) VALUES ( N'Anita', 23 ) ;
O sloupec ID se nemusíme starat. Hodnotu do něj za nás vloží SQL Server (díky IDENTITY v definici tabulky).
Operace READ načte data o jednom řádku. V jazyce SQL použijeme SELECT. Řekněme, že chceme zjistit detaily o osobě s ID = 3. K tomu použijeme následující SQL dotaz:
SELECT ID, NAME, AGE FROM PERSON WHERE ID = 3 ;
Operace UPDATE uloží aktuální data o jednom řádku (aktualizuje např. jméno a/nebo věk) do tabulky. Aby bylo jasné, který řádek se má aktualizovat, použijeme opět sloupec ID. Řekněme, že chceme přejmenovat osobu s ID = 2 na "Jan" a nastavit jí věk 36 let. V jazyce SQL použijeme stejnojmenný UPDATE:
UPDATE PERSON SET NAME = N'Jan', AGE = 36 WHERE ID = 2 ;
Operace DELETE smaže zvolený řádek z tabulky. Řádek ke smazání vybereme opět pomocí sloupce ID. Dejme tomu, že chceme smazat řádek s ID = 1. V jazyce SQL máme k dispozici rovněž DELETE:
DELETE FROM PERSON WHERE ID = 1 ;
Pro udržování aktuálního stavu dat v paměti použijte datovou strukturu seznam (List<T>).
Pro zobrazení na konzoli a "dojem" interaktivity použijte Console.SetCursorPosition
.
Pro interaktivní řízení výběru řádku (objektu ze seznamu), se kterým chcete něco udělat (upravit, smazat apod.),
použijte Console.ReadKey
. Pohyb v seznamu pak můžete řídit např. kurzorovými klávesami Up a Down.
Pro vstup od uživatele při zadávání hodnot použijte Console.ReadLine
.
Pro představu, jak by měla tato mini-appka vypadat, přikládám pár screenshotů: