Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682

    Gestire Eccezzione su Connessione DB [C# vs.net 2005]

    Ciao,


    Sto usando visualstudio express e sql server express 2005.

    Ho un applicazione winform.

    Sull'evento Shown del form viene eseguita la funzione di callback all'interno della quale è presente l'istruzione di apertura della connessione al database.

    La connessione va a buon fine, ma volevo sapere se era possibile gestire un eccezzione nel caso in cui il servizio di database non sia avviato.

    Ho visto che la mia applicazione va in bomba se il servizio di sql server è stoppato.

    Io avevo provato cosi, ma l'eccezzione non viene sollevata, probabilmente si dovrebbe controllare prima se il servizio è avviato.


    Codice PHP:
    private void initApp(object senderEventArgs e)
            {
                
                try
                {
                    
    this.myConn.Open();

                }

                catch (
    System.Data.SqlClient.SqlException ex)
                {

                    
                    
    MessageBox.Show("Errore connessione al database");

                }
                catch (
    System.InvalidOperationException ex
                {
                    
    MessageBox.Show("Errore");
                
                }
                
               

            } 
    Avete qualche suggerimento in merito ?
    IACO

  2. #2

    Re: Gestire Eccezzione su Connessione DB [C# vs.net 2005]

    Originariamente inviato da iaco74
    Io avevo provato cosi, ma l'eccezzione non viene sollevata,
    Non viene sollevata o non viene catturata?
    probabilmente si dovrebbe controllare prima se il servizio è avviato.
    Non è una buona idea... renderebbe difficile far funzionare il programma con un DB ospitato su un'altra macchina.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    Non viene ne sollevata ne catturata in quanto, in modalita di debug, mi si painta la winform e sono costretto a premere il pulsante stop debug per interrompere l'esecuzione del programma
    IACO

  4. #4
    Hai provato ad aspettare un po'? Probabilmente quando dici che "si pianta" in realtà il framework sta aspettando che il server risponda; prova a modificare il timeout nella stringa di connessione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    ok provo a mettere per prova un timeout basso cosi vedo se il blocco catch viene eseguito.

    Una domanda dal punto di vista della programmazzione le due classi di eccezzioni usate sono quelle corrette ?

    Sono quelle che ho trovato nella reference per il metodo open.
    IACO

  6. #6
    Originariamente inviato da iaco74
    Una domanda dal punto di vista della programmazzione le due classi di eccezzioni usate sono quelle corrette ?
    Certamente; solo di rado l'SDK non cita delle eccezioni che un metodo potrebbe sollevare (mi è capitato una sola volta).
    P.S.: eccezione, programmazione, tutte le parole che finiscono in -zione... con una sola z
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    ok, grazie,. faccio la prova del timeout, poi posto il responso.

    mannaggzzzzz

    IACO

  8. #8
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Infatti portando il timeout della connessione a 10 secondi per esempio viene eseguito il codice nel blocco catch.

    Grazie per il tuo aiuto
    IACO

  9. #9
    Non c'è di che; ciao!
    ---EDIT---
    Ah, un'ultima precisazione... anche non modificando il timeout sarebbe stato eseguito il blocco catch, solo che molto più tardi, perché il timeout di default è impostato ad un valore piuttosto alto (mi pare 60 secondi, ma non ci giurerei).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.