Ottimizzare Utilizzo SQL nel proprio codice

sabato 29 settembre 2007 - 11.03

Ghitano Profilo | Newbie

Un problema concettuale importante,
quando aprire una connessione al database nel programma e quando chiuderla?

es: nel mio gestionale il programma sta aperto nella schermata di vendita per ore e ore
apro la connessione in form_load e la chiudo quando esco dal form?

mentre in Anagrafica di magazzino potrei aprirla e chiuderla solo quando serve per craere e salvare l'articolo

qualcuno mi aveva suggerito di aprire la connessione al database all'avvio del programma per chiuderlo solo alla chiusura dell'intero programma, ma il mio vecchio gestionale dopo queste modifiche (consideriamo comunque che girava con Access) cominciava a dare problemi (a volte non venivano salvate tutte le operazioni di vendita credo per problemi di time out nella scrittura).

in vendita potrei utilizzare un dataset e salvare le modifiche alla fine
ma il programma lavora anche in rete con più postazioni
e dunque i dati debbono essere aggiornati a ogni transazione di vendita.
Suggerimenti...?



Ghitano BitBoys

SSUPERPIPPO Profilo | Guru

Ciao,

in .NET ci sono due modalità di operare con i database: connessa e disconnessa.
Io normalmente utilizzo i DataSet attraverso i quali viene sostanzialmente creata una copia lato client del datatable, e la connessione del database avviene solo per eseguire il FILL della tabella e per effettuare l'UPDATE. Poi sarai tu a decidere ogni quanto eseguire l'UPDATE in base alle tue esigenze.

Comunque non sono assolutamente daccordo con la soluzione di tenere sempre aperta la connessione fino alla chiusura dell'applicativo. Il Dataset ti dà maggiori performance a livello di accesso ai dati e interagisce perfettamente con tutti gli oggetti e controlli di Visual Studio.

Se ti può essere utili, nel mio blog (trovi il link qui sotto), trovi una classe bella e pronta per la gestione degli accessi ai database sia in modalità connessa che disconnessa.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

Ghitano Profilo | Newbie

Daccordo, ma ti faccio l'esempio del mio gestionale
dove ci sono due postazioni di cassa che lavorano contemporaneamente e una postazione in ufficio dove l'amministratore controlla il magazzino e inserisce e modifica articoli, ordini e, carica fatture

con i dataset devo comunque aprire un dataset quando inizio la transazione di vendita per chiuderlo quando premo il tasto scontrino, è un continuo apri e chiudi

altrimenti c'è il rischio che tre postazioni intervengano nella modifica delle quantità dello stesso articolo e il risultato sia un disastro.

SSUPERPIPPO Profilo | Guru

Non vedo il problema nel continuo apri/chiudi!


http://blogs.dotnethell.it/alebadalin

Ghitano Profilo | Newbie

Non credi che produca un deperimento di prestazioni?
Ghitano BitBoys

SSUPERPIPPO Profilo | Guru

Se l'apertura e chiusura è veramente così frequente allora devi per forza lavorare in modalità connessa.
Ti colleghi all'apertura del form e ti scolleghi alla chiusura dello stesso.

Non che personalmente mi piaccia molto... inoltre perdi i vantaggi del DataSet...

La decisione è tutta tua...

Ciao

Alessandro


http://blogs.dotnethell.it/alebadalin
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5