Ritardo nell'update dei record (C# OledB Access)

martedì 14 marzo 2006 - 12.06

harkonnen Profilo | Newbie

Salve ragazzi,
premetto di essere nuovo nell'ambiente C#, vi sarei grato se mi aiutaste a risolvere questo problema...

mi spiego:
sto creando la mia win application che interagisce con delle tabella Access tramite OleDb, i risultati li stampo a video attraverso dei datagrid presenti sul form.
Nel momento in cui eseguo una query tipo SELECT non ho problemi di nessun tipo, i risultati arrivano immediamente.

Nell'applicazione ho un esigenza particolare, che sarebbe quella di prendere i campi da una tabella e copiarli in un altra. per risolvere questo problema ho sviluppato una classe con un particolare metodo che esegue una operazione del genere:

SELECT * FROM "miatabella" WHERE ect AND ect.... while(dataReader.Read()){ INSERT INTO "nuovatabella" i record di "miatabella" UPDATE "miatebella" SET ect ect... }
successivamente faccio una
SELECT * FROM "miatabella" e "nuovatabella"
ed ancora i campi non sono stati aggiornati. se eseguo la select dopo pochi secondi i campi risultano aggiornati!

il mio problema è: come faccio ad evitare questo ritardo nell'aggiornamento?
perchè la select è più veloce della insert e dell'update?

grazie 1000!!!!

harkonnen

Brainkiller Profilo | Guru

>il mio problema è: come faccio ad evitare questo ritardo nell'aggiornamento?
>perchè la select è più veloce della insert e dell'update?

E' normale che le scritture/modifiche siano più lente di una semplice lettura. Magari una lettura beneficia anche di meccanismi di caching in memoria. E' noto a tutti che la memoria ha tempi d'accesso nell'ordine dei nanosecondi mentre accesso a disco di millisecondi quindi molto ordini di grandezza in più.

In ogni caso di quanti record stiamo parlando ?

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

harkonnen Profilo | Newbie

capisco perfettamente quello che vuoi dire, ed è giustissimo. solo che non ho ancore trovato un modo per risolvere questo problema.

cmq nella migliore delle ipotesi la insert la faccio di una sola riga, nella peggiore delle ipotesi possono anche essere un centinaio....

mi chiedevo se esistesse un modo per sincronizzare le select e le insert in qualche maniera....


grazie 1000

harkonnen

Brainkiller Profilo | Guru

>capisco perfettamente quello che vuoi dire, ed è giustissimo.
>solo che non ho ancore trovato un modo per risolvere questo problema.
>cmq nella migliore delle ipotesi la insert la faccio di una sola
>riga, nella peggiore delle ipotesi possono anche essere un centinaio....
>mi chiedevo se esistesse un modo per sincronizzare le select
>e le insert in qualche maniera....

Ciao,
hai provato a chiudere e riaprire la connessione al DB fra una operazione e l'altra ?

Cioè Select e Insert.
chiudi connessione
riapri connessione

di nuovo select

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

harkonnen Profilo | Newbie

si, ho già provato chiudendo e riaprendo la connessione, ma ho sempre quel fastidioso ritardo.
cmq sto adottando un'altra soluzione, ditemi cosa ne pesate:

faccio la mia SELECT su MIATABELLA e copio i valori in una struttura dati locale MIASTRUTTURA.
eseguo le operazioni di copia da MIA STRUTTURA su una seconda struttura dati locale NUOVASTRUTTURA.
allo stesso tempo copio i dati da MIATABELLA a NUOVATABELLA con una INSERT
eseguo l'UPDATE su MIATABELLA con SET etc etc...
infine mando a video i dati contenuti in NUOVASTRUTTURA

in questo modo creso di riuscire a visualizzare i dati aggiornati anche se materialmente non sono ancora stati aggiornati.

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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5