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ů: