6 messaggi dal 18 ottobre 2003
www.ziored.net
Beh la differenza è enorme, come fai a non notarla ???
tanto per dirne una: se fai una classe che esegue semplicemente una query, l'effettivo risparmio in termini di codice scritto si riduce solamente alle 4 righe di "apertura connessione", "esecuzione query", "chiusura connessione" e "ritorno recordset/valore" (opzionale). Se invece utilizzi una classe che contenga al suo interno i metodi per recuperare, modificare, inserire ed eliminare record dalla rispettiva tabella, avrai i grossi benefici della riusabilità di questo codice in qualsiasi pagina e quindi se ad esempio in 2 pagine dovrai recuperare un record da quella tabella non sarai costretto a scrivere a manetta l'intero codice di recupero record in entrambe le pagine ma basterà semplicemente richiamare un banalissimo metodo.

Ad esempio (scrivo in C# perchè è il linguaggio che preferisco):

// ### INIZIO ESEMPIO ###
public class MiaTabella {
public string Campo1 = "";
public string Campo2 = "";
public MiaTabella () {
// Codice del costruttore di classe
}
public static MiaTabella RecuperaRecord (string filtro) {
// Apertura connessione
// Apertura recordset in base al 'filtro'
MiaTabella miaTabella = new MiaTabella();
miaTabella.Campo1 = Recordset.GetString(0);
miaTabella.Campo2 = Recordset.GetString(1);
// Chiusura recordset
// Chiusura connessione
return miaTabella;
}
public static void AggiungiRecord (MiaTabella miaTabella) {
// Apertura connessione
// Costruzione query INSERT in base ai campi
// e proprietà di 'miaTabella'
// Chiusura connessione
}
public static void ModificaRecord (MiaTabella miaTabella) {
// Apertura connessione
// Costruzione query UPDATE in base ai campi
// e proprietà di 'miaTabella'
// Chiusura connessione
}
}
// ### FINE ESEMPIO ###

Dall'esempio qui sopra per recuperare un record basterà eseguire nella pagina il seguente codice (scrivo sempre in C#):
string filtro = "<QUI_METTI_IL_FILTRO_PER_IL_RECORD>";
MiaTabella miaTabella = MiaTabella.RecuperaRecord(filtro);
.
Per inserire un record:
MiaTabella miaTabella = new MiaTabella();
miaTabella.Campo1 = "Valore1";
miaTabella.Campo2 = "Valore2";
MiaTabella.AggiungiRecord(miaTabella);
.
Per modificare un record:
MiaTabella miaTabella = new MiaTabella();
miaTabella.Campo1 = "Valore1";
miaTabella.Campo2 = "Valore2";
MiaTabella.ModificaRecord(miaTabella);
.
Spero di essere stato abbastanza chiaro.

-=| ZioRed |=-
WinApps & Web Developer
http://www.ziored.net
ora inizio a capirci molto di più ragazzi...
ancora un paio di cosette cosi facendo avrò (ammesso che ci siano 10 tabelle ) 10 classi con le quali interagirò con le singole tabelle!giusto?

piccolo dubbio ma non posso fare una classe unica per compiere tutte le operazioni passando come parametri il nome della tabella e la query?

per Ricciolo : tu scrivi.....

SqlCommand cmd = new SqlCommand("select * from prodotti WHERE id = " + this.Id "', con);

ma seio devo recuperare due campi devo andare a modificare la query e se devo fare 7 operazioni sulla stessa tabella ?
una che mi richiede dei dati ordinati in un determinato modo, un'altra operazione mi conta tutti i records e via dicendo ....
non posso mettermi a fare 7 function solo per fare queste operazioni ...
non mi sembra una buona idea
o sbaglio?

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
brutusin ha scritto:

SqlCommand cmd = new SqlCommand("select * from prodotti WHERE id = " + this.Id "', con);

ma seio devo recuperare due campi devo andare a modificare la query e se devo fare 7 operazioni sulla stessa tabella ?
una che mi richiede dei dati ordinati in un determinato modo, un'altra operazione mi conta tutti i records e via dicendo ....
non posso mettermi a fare 7 function solo per fare queste operazioni ...
non mi sembra una buona idea
o sbaglio?


Hanno inventato le stored procedure apposta, puoi fare overloads dei metodi, aggiungere altre proprietà che ti posso essere utili.

Ciao

Il mio blog
Homepage
ma quindi non deprechi l'utilizzo di una soluzione che passa la query al metodo presente nella classe !!!

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
ragazzi altra cosetta allora ho pensato seguendo il vostro esempio di creare una funcion/sub per ciascuna interazione con il db
quindi avrò
A)una function che mi restituisce un dataset con tutti i dati della tabella
B)una function che mi restituisce i dati per creare una DropDownList
C)una function che mi cancella un determinato dato
D)una function che mi fa l'update di tutti i campi presentati precedentemente
E)una function per inserire i dati nella tabella

e via dicendo...

secondo voi è ok?

se poi dovessi avere necessità di creare delle altre function/sub per la gestione di quella tabella è un problema secondo voi inserirla in questa classe?

poi avendo chessò 10 tabelle avrò 10 classi che mi gestiscono il tutto
va bene?

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
11.886 messaggi dal 09 febbraio 2002
Contributi
per me è una perdita di tempo.
Molti lavorano con mySQL che non ha le stored procedures (ancora) eppure la gente sopravvive, perchè andarsi a complicare la vita con "una function per ogni operazione su una tabella"?

Personalmente credo che una function a cui passo la query e che mi faccia risparmiare quelle 3 o 4 linee di codice e che gestisca le instanze di adapter e soci in mooolti punti dell'applicazione sia più efficace di una procedura di unica (forse dubbia) utilità.



Modificato da BrightSoul il 04 novembre 2003 19.40 -

Enjoy learning and just keep making
c' è anche un problema di "protezione" del codice siccome questa applicazione andrà installata su molti computer non vorrei proprio far vedere tutto il codice

ma a questo punto ho deciso di creare 3 o 4 function per lo sviluppo dei 3 o 4 tipi di query

poi per il discorso della protezione del codice userò un paio di dll per raggruppare le funzioni più utilizzate (verifica validità indirizzo e-mail etc)
tagli la testa al toro

mi da un fastidio non riuscire a capire fino in fondo le possibilità delle classi che non immagini...!!!!

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
11.886 messaggi dal 09 febbraio 2002
Contributi
anch'io sono un principiante in .net, e come te non riuscirò a comprendere la la vera potenzialità delle classi ma secondo me, da quello che percepisco è come in VB6: hai la possibilità di rendere un'applicazione modulare il che ti permette ti riutilizzare parte del codice e rendere più semplice il lavoro quando si sviluppa in team.

Da qui in avanti sta solo al tuo buonsenso (secondo me) riuscire a capire cosa mettere in una classe e cosa invece sviluppare nella pagina.
Non è che perchè Vb.NET è un vero linguaggio di programmazione bisogna per forza usare le classi.

Io per la connessione al db uso ancora gli include, eppure l'applicazione funziona. Anzichè usare un Import uso un include, è una direttiva diversa che funziona ugualmente.

Scusate ma sono un tradizionalista che sviluppa con blocco note. Credo solo in quello che posso toccare.



Modificato da BrightSoul il 04 novembre 2003 21.57 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.