Come faccio a verificare se un'operazione sul db è andata a buon fine

venerdì 15 luglio 2011 - 12.53

netting Profilo | Junior Member

Mi spiego.
Ogni volta che faccio un'operazione sul db quindi una select o update, delete, insert, voglio fare in modo che l'utente veda un messaggio con scritto operazione avvenuta con successo o errore impossibile effettuare l'operazione.
Per fare in modo che l'utente riceva l'errore tramite response.write("errore impossibile effettuare l'operazione") devo verificare se l'operazione sul db è andata a buon fine, altrimenti l'utente vedrà sempre il messaggio che l'operazione è avvenuta con successo.
Come faccio per far questo?

Grazie

Gluck74 Profilo | Guru

Le informazioni che ci dai sono pochine, ma vediamo di ipotizzare una banale pagina:

ammettiamo di avere un non specificato controllo che permette all'utente di effettuare queste modifiche sul DB (potrebbe essere una GridView, un DetailView, una form custom... non so, specifica meglio), ed ammettiamo di essere dentro l'evento che effettua l'operazione (spero tu abbia già il codice per modificare sul DB);
Aggiungi soltanto una label nella pagina.

dovrai fare quindi:
... ... try { //il codice che effettua la modifica sul DB ... ... labelResult.Text = "operazione effettuata correttamente"; } catch (Exception err) { labelResult.Text = "Errore durante la modifica: " + err.Message; }

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

netting Profilo | Junior Member

allora utilizzo una gridview, ti posto il codice che ho provato:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

In questo modo però mi da sempre cancellazione effettuata anche se non viene cancellato nulla e i dati non sono presenti nel db

Gluck74 Profilo | Guru

be, in questo caso devi controllare se effettivamente sono stati eliminati i dati, ovvero devi controllare l'esito dell'esecuzione:
int numAffected = comm.ExecuteNonQuery();
ti restituisce il nomero di riche modificate o cancellate.

Inoltre trasforma questo troiaio:
this.ClientScript.RegisterStartupScript(this.GetType(), "Some Title", "<script language=\"javaScript\">" + "alert('Cancellazione effettuata con successo!');" + "window.location.href='Home.aspx';" + "<" + "/script>");

con questo:
this.ClientScript.RegisterStartupScript(this.GetType(), "Some Title", "alert('Cancellazione effettuata con successo!');window.location.href='Home.aspx';", true);


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

netting Profilo | Junior Member

ok quell'istruzione mi sarà utile ma io devo anche verificare se sono presenti quei dati nel db e quindi in quel caso cancellarle, in questo caso non cè neanche bisogno dell'istruzione che mi hai postato

Gluck74 Profilo | Guru

piuttosto che fare 2 query (la prima per cercare, la seconde per cancellare), tu fai la cancellazione, se ti restituisce 0 (o -1 non ricordo) vuol dire che i dati non c'erano


se vuoi proprio cercare:
mantieni la where identica, fai solo
"SELECT * from Tabella where........"
SqlDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);

ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

netting Profilo | Junior Member

Giusto hai ragione non serve 2 query grazie mille!

netting Profilo | Junior Member

Tutto risolto! :)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5