FormView a kontrola duplikátních hodnot   otázka

ASP.NET WebForms

Dobrý den chtěl jsem vás poprosit o radu. Mám databázi s tabulkou DVDcka a ta ma dva sloupce (cislo,název).Při vkládání nového DVD do tabulky přes FormView uživatel zadává jak cislo tak i název. A problém je následující. Nevím jak zabespečit aby uživatel nezadal cislo dvdcka stejná jaké už ve sloupci cislo je. Nechtěl bych to ale řešit tím že v databázi zadám aby se hodnoty v tabulce DVDcka a sloupci cisla zadavala automaticky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste vkládání do tabulky přes FormView ošetřit kódem, který zjistí, zda-li v tabulce neexistuje duplicitní záznam, a stornuje operaci přidávání, popř. vypíše nějakou chybovou hlášku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To jsem zkousel. Vytvořil jsem si v C# tabulku a nahral si do ni ty cisla dvdcek, ale nevim jak prochazet jednotlive radky tabulky a porovnavat s tím co zadal uzivatel. Nemuzu prijit na to jak to zapsat v C#.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste přes SQL vypsat počet řádků, které mají stejné číslo, jako ostatní:

SELECT COUNT(*) FROM DVDcka WHERE cislo = ...

Pro více informací prostudujte SQL tutoriály na tomto webu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přemýšlejte trochu, když pojmenováváte dotaz ve fóru. Název tématu c# opravdu vystihuje, na co se ptáte.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Variant je nekolik, ktera je lepsi nebo horsi necham na vas

1]

Nevim co mate za databazi. Ale pokud by bylo mozne tak nastavit na sloupec s cislem aby se zaznamy nedaly duplikovat. Cimz pri INSERTU dojde k vyjimce kterou si odchytite.

2]

Pred kazdym vlozenim zkontrolujete zda dotycne cislo jiz v databazi neni ExecuteScalar nebo ulozena procedura a vyjimku zas odchytite.

3]

Taky moznost pres javascript vygenerovat pri loadu stranky pole s id ktery v databzi jsou. A patricne po kliknuti osetrit.

atd ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jediné rozumné řešení je odchytávat výjimky při INSERTu (na daný sloupec nastavit UNIQUE index).

Zjišťovat číslo při loadu stránky a ukládat jej do ní je k ničemu (než formulář vyplníte, můžou se data v databázi změnit), stejně tak je nesmysl před INSERTem jiným dotazem zjitit, jestli tam to číslo není (opět se mezi dvěma dotazy, i když jsou hned po sobě, ve víceuživatelském prostředí může tabulka změnit).

Ideální je tedy INSERTnout rovnou a kdyžtak ošetřit chybu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback