Portál AbcLinuxu, 12. května 2025 02:13
Ahoj, aku vhodnu datovu strukturu by som mal zvolit, ak chcem zapisat data typu:
8.7 = "retazec1"
8.8 ="retazec2"
Vzdy je cislo, ktore naslduje druhe cislo na ktorych pozicii lezy retazec. Nieco ako na pozicii dvojrozmerneho pola je zapisany retazec. Programovaci jazyk C#
Map<Integer, Map<Integer, String>>
so C# nemozem sluzit. Toto je vseobecne riesenie; mozno sa da usit lepsie, krajsie, rychlejsie, pamatovo nenarocnejsie riesenie, ak su zname dalsie fakty o udajoch: Kolko tych mapovani bude? Kolko bude klucov na prvej a druhej urovni? Kolko rozlicnych hodnot bude mat prva a kolko druha hodnota? Budu v sekvencii hodnot "diery"? Etc.
No, dokud nenapíšeš, co s těmi daty chceš dělat, tak ti tady s výběrem struktury nikdo neporadí. Způsobů je aspoň tisíc a každý je vhodný pro jiný účel. Toš tak… :-/
budem prechadzat hexa string po znakoch, nacitam poziciu x kde bude ulozena premena y, ktoru nasledne skonvertujem na int. Hodnote y bude odpovedat retazec, ktory nasledne ulozim do databazy. Priklad:
mam hex string: 123F
nacitam poziciu x = 0 na ktorej je ulozena hodnota y = 1. pozriem sa do statickej struktury, kde hodnota 1 bude odpovedat retazcu1.
OKi, takže ve výsledku se každý znak řetězce dostane do databáze?
Příklad:
řetězec "123F"
INSERT INTO db_test (val) VALUES ('1') / INSERT INTO db_test (val) VALUES ('2') / INSERT INTO db_test (val) VALUES ('3') / INSERT INTO db_test (val) VALUES ('15') / COMMIT /
Pochopil jsem to správně?
nie znak retazca ale to co bude ulozene v nom, uz som to vyriesil takto:
private static readonly string[][] data = new string[][]
{
// Type of CPU
new string[2] { "PIC", "ARM" },
// Type of Mem
new string[5] { "Unknown", "Tyco", "FLASH" },
...
};
cize pride mi redazec, z pozicie x = 0, vytiahnem y = 1, co odpoveda retazcu data[x][y] == "ARM", to databazy teda ulozim "ARM"
Ahá! Už je mi to jasné!
Jen drobná otázka: jak se bude pole inicializovat? Podle příkladu to vypadá na něco dynamického a né zrovna malého. Možná se to pole i inicializuje z databáze. V tom případě bych celou tuto logiku přesunul do databáze.
Přesouvání logiky do databáze je výsadou databázistů, které my, aplikační programátoři, v takovém případě s chutí ignorujeme
Já za tím vidím hloupou referenční integritu a číselníky. Žádná aplikační logika to není.
Ale na druhou stranu je pravda, že doteď jsem přesně nepochopil, co autor vlastně zamýšlí, takže je to bezpředmětné. :-/
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.