sistemista ha scritto:
con il codice di sopra ho questo errore e non capisco perchè...forse sqlconnection apre la connessione? [...]
No, la creazione della connessione non la apre automaticamente: questo avviene quando si chiama il metodo
Open() dell'oggetto
SqlConnection, che è appositamente progettato a questo scopo.
Il fatto che la connessione risulti già aperta nel messaggio di errore può essere dovuto a un'altra parte di codice, presente altrove ma non riportata, che effettua nuovamente l'apertura per qualche motivo, benché la connessione sia già stata aperta in precedenza.
sistemista ha scritto:
questo lo stesso codice senza myconn.open e funziona correttamente
Questo confermerebbe l'ipotesi fatta qui sopra.
sistemista ha scritto:
Spero di aver spiegato bene i passi che ho fatto e quello che non capisco il motivo per cui non funziona il blocco try/catch.
In realtà, il codice cambia in continuazione, e quello che viene riportato è un messaggio di errore mostrato in una message box che si trova sia in un
Try...Catch sia all'esterno (quindi impedendo di capire qual è dei due), e senza però che sia evidente qual è l'uso effettivo che viene fatto dalla connessione una volta che è stata aperta in questo metodo "apridb()".
Io cambierei il tipo di approccio: qual è l'obiettivo per cui si sta aprendo questa connessione? qual è l'operazione che viene effettivamente eseguita tramite la stessa connessione? In quel contesto di utilizzo specifico, è opportuno 1) usare il
costrutto Using quando si crea la connessione usando una variabile preferibilmente locale, 2) aprire la connessione, 3) eseguire il comando desiderato per leggere o scrivere i dati sfruttando la connessione aperta, 4) al termine del comando, chiudere la connessione (viene fatto in automatico in presenza di
Using), 5) preoccuparsi successivamente della gestione degli errori, magari racchiundendo il metodo con i passi sopra descritti in un costrutto
Try...Catch.
Ciao!