ASP.NET - zachycení sql exception – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ASP.NET - zachycení sql exception – .NET – Fórum – Programujte.comASP.NET - zachycení sql exception – .NET – Fórum – Programujte.com

 

HoriciKer
~ Anonymní uživatel
5 příspěvků
10. 2. 2013   #1
-
0
-

Dobrý den, potřebuju poradit, jak ošetřit tuto vynucenou chybu.

Chybu vyvolávám záměrně, aby se do databáze nevkládali duplicitní údaje. Do databáze se po kliknutí na tlačítko uloží  údaj.

V programování nejsem moc dobrý, a nevím, do jaké události ošetřit tuto chybu. Asi by se měla ošetřit nějakou podmínkou - pokud nastane chyba SqlException, zobrazit hlášku. Bohužel nevím, jak mám tuto podmínku poskládat. 

Taky jsem zkoušel použít Try...Catch blok, ale takhle to asi nepůjde, protože s databází nekomunikuji v kódu, ale na serveru přes SqlDataSource.

Předem děkuji za odpověď

Nahlásit jako SPAM
IP: 88.103.170.–
Vaizo0
Stálý člen
10. 2. 2013   #2
-
0
-

Ty nemáš přístup k zdrojovému kódu aplikace, která běží na serveru?

Nahlásit jako SPAM
IP: 37.188.228.–
HoriciKer
~ Anonymní uživatel
5 příspěvků
10. 2. 2013   #3
-
0
-

#2 Vaizo
Jo mám

Nahlásit jako SPAM
IP: 88.103.170.–
HoriciKer
~ Anonymní uživatel
5 příspěvků
11. 2. 2013   #4
-
0
-

#1 HoriciKer
Našel jsem si na internetu tento kód:

  Try
        Catch ex As SqlException
            If Not ex.ErrorCode = &H80131904UI Then
                Throw


            End If
        End Try

Ale bohužel nevím, do jaké události jej mám vložit. Zkoušel jsem to do události tlačítka, které vyvolá chybu (Button_click), do Page_Error, Application_Error. V ani jednom případě se chyba neošetří.

Nahlásit jako SPAM
IP: 88.103.170.–
Vaizo0
Stálý člen
11. 2. 2013   #5
-
0
-

No pokud používáš SqlDataSource, tak výjmku můžeš ošetřit v OnInserting události. 

Pokud v aspx (případně ascx) souboru na kontrolce SqlDataSource není nadefinovaná událost OnInserting, tak ji tam zadefinuj a ověř, že se ti vytvoří i v code behing (soubor přiřazený k tomu ascx).

No a v této události, pak můžeš následujícím způsobem ověřit, jestli nastala výjmka:

if (e.Exception != null)
{
	//handle the exception 
}
Nahlásit jako SPAM
IP: 90.178.250.–
HoriciKer
~ Anonymní uživatel
5 příspěvků
11. 2. 2013   #6
-
0
-

#5 Vaizo
Děkuju za odpověď.

Událost OnInserting už jsem vyvolal. Akorát je ještě problém v tom kódu, co jste napsal:

Nahlásit jako SPAM
IP: 88.103.170.–
Vaizo0
Stálý člen
11. 2. 2013   #7
-
0
-

#6 HoriciKer
Omlouvám se, teď u sebe nemám Visual Studio. Zkusím ještě tipnout, že jsem se spletl a není to OnInserting ale OnInserted. A při nejhorším bych ještě dal try a catch do těchto událostí   

Kdo se pojistí, škodu nezjistí ...

Nahlásit jako SPAM
IP: 90.178.250.–
Kuba
~ Anonymní uživatel
59 příspěvků
11. 2. 2013   #8
-
0
-

#7 Vaizo
Použijte standardně Try,Catch blok a odchytávejte buďto určitý typ chyby nebo obecně SqlException ,kterou můžete propagovat dále do systému - to už záleží na Vaší implementaci,zda používáte lgging či zobrazování chyb v některé z vyšších úrovní abstrakce

Nahlásit jako SPAM
IP: 88.208.88.–
HoriciKer
~ Anonymní uživatel
5 příspěvků
11. 2. 2013   #9
-
0
-

#8 Kuba
Už jsem na to přišel. Kód má být takto:

 Protected Sub SqlDataSource3_Inserted(sender As Object, e As SqlDataSourceStatusEventArgs)
        If e.Exception IsNot Nothing Then
            Response.Redirect(ResolveClientUrl("~/Default.aspx"))
            ' Prevent exception from being re-thrown
            e.ExceptionHandled = True
        End If
    End Sub
Nahlásit jako SPAM
IP: 88.103.170.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 28 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý