Precedente :: Successivo |
Autore |
Messaggio |
abaddon Utente adulto
Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Mer Lug 21, 2004 10:34 am Oggetto: [java] si puo' migliorare sto algoritmo? |
|
|
dunque 2 righe di spiegazione, io ho 2 elenchi, uno aggiornato che mi arriva da una lista grafica e uno vecchio da aggiornare che sta nel db.
io devo aggiornare la lista del db inserendo nel db solo i componenti della lista che ricevo dalla grafica che mancano e poi eventualmente eliminare i componenti extra che son presenti nel db ma che son stati rimossi dalla lista grafica.
ecco il mio algoritmo, si riesce per voi a rimpicciolire? io l'ho suddiviso in 2 parti:
la prima parte confronta un valore nel db e lo confronta con quelli della lista, la seconda parte invece confronta un valore della lista e fa scorrere per ogni valore della lista i valori del db. l'inverso della prima parte insomma.
Codice: |
int[] alunni=studente.getSelectedIndices();
query="SELECT * FROM lezionea WHERE lezione='"+this.id+"'";
ResultSet rs=db.query(query);
try{
while (rs.next()) {
int controllo=0;
for (int i = 0; i < alunni.length; i++) {
if(stud.get(alunni[i]).equals(rs.getString("studente"))){
controllo=1;
}
}
if(controllo==0){
query="DELETE FROM lezionea WHERE studente='"+rs.getString("studente")+"'";
System.out.println(query);
db.updatequery(query);
}
}
query="SELECT * FROM lezionea WHERE lezione='"+this.id+"'";
rs=db.query(query);
for (int i = 0; i < alunni.length; i++) {
int controllo=0;
while(rs.next()){
if(stud.get(alunni[i]).equals(rs.getString("studente"))){
controllo=1;
}
}
if(controllo==0){
query="INSERT INTO lezionea VALUES ('"+this.id+"','"+stud.get(alunni[i])+"','0')";
System.out.println(query);
db.updatequery(query);
}
rs.isFirst();
}
OK.setVisible(true);
ERRORE.setVisible(false);
}catch(Exception ex){
ERRORE.setVisible(true);
OK.setVisible(false);
}
|
|
|
Top |
|
|
vinz Amministratore
Registrato: 12/12/03 12:56 Messaggi: 6648 Residenza: San Pellegrino Terme (Bergamo)
|
Inviato: Mer Lug 21, 2004 11:14 am Oggetto: |
|
|
Secondo me fai prima a cancellare tutti quelli vecchi ed aggiungere quelli nuovi.
Praticamente una DELETE FROM seguita da una INSERT INTO. _________________ Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla |
|
Top |
|
|
abaddon Utente adulto
Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Mer Lug 21, 2004 11:20 am Oggetto: |
|
|
ipotesi valida, unico problema che nel db ci sono alcuni valori nello stesso record che se vanno cancellati andrebbero ripristinati pari pari, quindi uscirebbe un bel casino
il db è una cosa simile:
|id_lezione|id_studente|stato|
id_lezione è costante e non ho poblemi, id_studente sarebbe il contenuto delle liste e stato sarebbero i valori di quello studente per quella determinata lezione. (stato indica pagato/non pagato)
se elimino tutto mi perdo lo stato e memorizzarsi eventualmente lo stato in qualche array diventerebbe piu' un casino che altro |
|
Top |
|
|
vinz Amministratore
Registrato: 12/12/03 12:56 Messaggi: 6648 Residenza: San Pellegrino Terme (Bergamo)
|
Inviato: Mer Lug 21, 2004 11:30 am Oggetto: |
|
|
1) Recuperi i dati dal db e popoli la maschera
2) L'utente effettua le modifiche necessarie
3) Preme il pulsante aggiorna, che cancella tutte le informazioni vecchie e inserisce quelle nuove.
Secondo me c'è un pattern (o una metodologia) per risolvere in maniera "standard" questo problema: prova a guardare come fa phpMyAdmin, hai presente quando inserisci un nuovo record o un nuovo campo in una tabella? _________________ Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla |
|
Top |
|
|
abaddon Utente adulto
Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Mer Lug 21, 2004 2:54 pm Oggetto: |
|
|
si... k, eliminare e poi reinserire tutto sarebbe la cosa migliore, ma io non ho lo status e non mi serve caricarlo, anche perchè mi darebbe solo fastidio e mi incasinerebbe le cose quando dovrei andare a reinserire il tutto, andando a verificare lo status come era.
a me interessa sapere se come ho strutturato io l'algoritmo, qiuindi facendo scorrere una lista per ogni elemento della seconda lista e viceversa è per forza così o si puo' ottimizzare un po la cosa. |
|
Top |
|
|
vinz Amministratore
Registrato: 12/12/03 12:56 Messaggi: 6648 Residenza: San Pellegrino Terme (Bergamo)
|
Inviato: Gio Lug 22, 2004 1:18 pm Oggetto: |
|
|
abaddon ha scritto: | a me interessa sapere se come ho strutturato io l'algoritmo, qiuindi facendo scorrere una lista per ogni elemento della seconda lista e viceversa è per forza così o si puo' ottimizzare un po la cosa. |
Per essere corretto lo è! Hai problemi di prestazioni?
Altrimenti intanto lascialo così e concentrati su un altro.
Il tempo è denaro. Cit. _________________ Let the future tell the truth and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I really worked, is mine.
Nikola Tesla |
|
Top |
|
|
abaddon Utente adulto
Registrato: 05/04/04 16:32 Messaggi: 2033
|
Inviato: Gio Lug 22, 2004 8:45 pm Oggetto: |
|
|
ma infatti son già passato avanti, l'avevo affidata a voi l'ottimizzazione |
|
Top |
|
|
|