Spojení s databází   otázka

ASP.NET WebForms, Databáze

Dobrý den,

přistupuji programově na localhostu k databázi:

public string open()
{
     try { conn.Open(); }
     catch (Exception err)
     {
         return "Chyba při spojení k databázi - " + err.Message + ".";
     }
     return "Spojení bylo úspěšné.";
}

open();
Object ret = cmd.ExecuteScalar();

Z 70% mi program spadne za běhu s následující chybou (někdy ale ne):

ExecuteScalar requires an open and available Connection. The connection's current state is closed.

Připojení otvírám jak je vidět v kódu hned před provedením ExecuteScalar, tak v čem by mohl být problém?

Používám databázi MSSQL 2005 Express.

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

Není tu vidět v jakém kontextu je definováno conn a kde všude se s ním pracuje, tudíž nelze poradit.

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

Pokud se připojení nepovede, chybu spolknete v try catch bloku a nedozvíte se o ní a i přes neúspěšně otevřené spojení se provede příkaz ExecuteScalar. To vyvolá poslanou chybu - indikuje, že voláte ExecuteScalar i přes to, že spojení není doposud otevřeno.

Řešením je zjistit, proč se spojení neotevírá. Jednoduše tak, že try catch blok odeberete a chyba přeruší běh vlákna a zobrazí se.

nahlásit spamnahlásit spam 2 / 2 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