Tempi di esecuzione query

mercoledì 23 maggio 2012 - 11.27
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Access (.mdb)

olmof Profilo | Junior Member

Hola.
Non so se le cose strane capitano tutte a me!
Da codice VB.NET creo una query, per verificare che sia tutto a posto ho messo un punto di interruzione, verifico e riparto con F5 e la query aggiorna regolarmente il database.
Molto bene, tolgo il punto di interruzione, rieseguo il programma ma il database non si aggiorna più.
Se fermo di nuovo il tutto prima dell'esecuzione di
cmd.ExecuteNonQuery()
aspetto un paio di secondi e faccio ripartire funziona tutto altrimenti niente da fare.
Avete una giustificazione?
Ciao

alx_81 Profilo | Guru

>Hola.
Ciao

>Se fermo di nuovo il tutto prima dell'esecuzione di
>cmd.ExecuteNonQuery()
>aspetto un paio di secondi e faccio ripartire funziona tutto
>altrimenti niente da fare.
>Avete una giustificazione?
Dovresti dare ulteriori dettagli, così è molto dura aiutarti. Cosa usi? Crei transazioni? Sicuro che non ci sia qualcun altro che tenga quei record lockati?


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

olmof Profilo | Junior Member

Questo è la parte di codice che utilizzo per la lettura del record, la creazione della stringa per l'aggiornamento e l'esecuzione della stessa.


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

Se lascio andare tutto così l'aggiornamento non avviene.
Pensavo fosse un problema sulla creazione della stringa, quindi ho messo una pausa prima di esguire la Execute, ho verificato che fosse tutto a posto ed ha funzionato.
Ripetendo il tutto diverse volte sono arrivato proprio a questa conclusione: bloccando il programma e facendolo ripartire funziona tutto, altrimenti l'aggiornamento non avviene.
Spero di essere stato chiaro.
Ciao e grazie

olmof Profilo | Junior Member

Parzialmente risolto.
Dunque, la procedura agisce in due fasi:
1) inserimento di un record
2) riapertura ed aggiornamento del record appena inserito (tramite il codice postato)

Ho provato ad inserire tra le 2 fasi una Close e una Open del database e tutto si è messo a funzionare.
Non è sicuramente la soluzione migliore, ma per ora mi accontento.
Se avete suggerimenti son qui...

Ciao

alx_81 Profilo | Guru

>Ho provato ad inserire tra le 2 fasi una Close e una Open del
>database e tutto si è messo a funzionare.
Questo perchè hai rilasciato delle risorse secondo me.

>Non è sicuramente la soluzione migliore, ma per ora mi accontento.
>Se avete suggerimenti son qui...
hai provato a mettere transazioni monolitiche per entrambi i comandi? Ho paura che sia semplicemente lockato il record tra un'operazione e l'altra..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

olmof Profilo | Junior Member

ehm, cosa sono le operazioni monolitiche?

alx_81 Profilo | Guru

>ehm, cosa sono le operazioni monolitiche?
atomiche.. tipo, se serve fare più statement affinchè vada TUTTO O NIENTE, puoi pensare di fare una transazione che comprenda tutti i comandi e che venga annullata (rollback) interamente in caso di errore.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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