Visualizzazione stampabile
-
sqlite sommare record
Salve a tutti, avrei bisogno di un aiuto , devo sommare dei valori memorizzati nel database appartenenti alla stessa categoria, cioè esempio QuantitàGIacenza 10,20,30, ho visto che per queste operazioni si usa il comando SUM.
Cursor c = dbHelper.rawQuery("SELECT SUM(QuantitàGIacenza) AS temp FROM mia_tabbella_database");
mi segnala sempre l' errore sotto rawQuery , non capisco perché .
mi potete aiutare con qualche esempio, grazzie
-
Quote:
Originariamente inviato da
extrema
Salve a tutti, avrei bisogno di un aiuto , devo sommare dei valori memorizzati nel database appartenenti alla stessa categoria, cioè esempio QuantitàGIacenza 10,20,30, ho visto che per queste operazioni si usa il comando SUM.
Cursor c = dbHelper.rawQuery("SELECT SUM(QuantitàGIacenza) AS temp FROM mia_tabbella_database");
mi segnala sempre l' errore sotto rawQuery , non capisco perché .
mi potete aiutare con qualche esempio, grazzie
Errore in compilazione o in esecuzione? Che genere di errore?
Cmq rawQuery è un metodo della classe SQLiteDatabase, e quindi devi avere un oggetto di questo tipo, e non SQLiteOpenHelper.
-
ma se le itineri tutte estrai i valori e li sommi? :)
Nik
-
Io uso una classse DatabaseHelper e un DBAdapter (non so se questo è il tuo caso)
se si potresti fare una cosa del genere:
Ciao
nik
-
Ciao Nik, grazie per la risposta, ci provo e ti faccio sapere.
iClaude76, grazzie anche a te, ma ho provato ad usare un oggetto della classe SQLiteDatabase, ma lo devo implementare ???
-
è appena sopra l'esempio
dimmi di che hai bisogno
Nik
-
buonasera, mi spiego meglio, il fatto che ho salvato nel database molti record sotto "QuantitàGIacenza" in effetti devo sommare tutti i suoi valori per ricavare il totale ma non riesco a capire il concetto, ci provi a spiegarmelo meglio grazie.
se faccio così:
dbHelper = new dbManage(this);
dbHelper.openToRead();
Cursor c = dbHelper.queueAll();
while (c.moveToNext()){
int sommaQuantitàGIacenza = c.getInt(c.getColumnIndex("QuantitàGIacenza"));
//oppure così :String sommaQuantitàGIacenza = c.getString(1);
la variabile sommaQuantitàGIacenza mi da solo l'ultimo inserimento e non la somma come faccio ad avere la somma di tutti i suoi valori?????
grazie
-
Usa una variabile d'appoggio la dichiari prima della while e poi: appoggio= appoggio + c.getInt(c.getColumnIndex("QuantitàGIacenza"));
Scusa ma ho scritto da cell
Nik
-
Ciao, con la tua procedura riesco a sommare la variabile di appoggio con quella estratta dal database, ma io vorrei sommare tutti i record appartenenti a QuantitàGiacenza ecco un esempio del mio database:
ID QuantitàGiacenza
1 10
2 20
3 15
4 5
ad ogni inserimento di un valore ID si autoincrementa, mi serve sapere la somma di QuantitàGiacenza come posso fare,
-
guarda che la variabile appoggio serve a quello tu la dichiari PRIMA DELLA WHILE
fammi sapere
nik
-
Quote:
Originariamente inviato da
extrema
Ciao Nik, grazie per la risposta, ci provo e ti faccio sapere.
iClaude76, grazzie anche a te, ma ho provato ad usare un oggetto della classe SQLiteDatabase, ma lo devo implementare ???
DbHelper non mi sembra della classe SQLiteDatabase.
Non hai risposto sul tipo di errore che ti viene segnalato....
PS. Ti consiglio di usare la funzione SUM anziché ciclare sul Cursor: risparmi codice e memoria...
-
grazzie nikita1977 ci sono riuscito sequendo il tuo consiglio, ora pero vorrei provarlo a fare anche usando SUM iClaude76 ho notato che usa questo metodo mi daresti qualche dritta.
-
mi spieghi meglio la funsione SUM
dbHelper = new dbManage(this);
dbHelper.openToRead();
Cursor c = dbHelper.queueAll();
Cursor c = sqLiteDatabase.rawQuery("SELECT SUM(QuantitàGiacenza) AS somma nome_mia_tabella",null);
il parametro null ci vuole???
il mio progetto ha solo una classe chiamata dbManage per gestire il database, tu mi hai parlato di un oggetto tipo SQLiteDatabase, ecco cosa c è nella mia classe dbManage a riguardo di questo oggetto
private SQLiteDatabase sqLiteDatabase;
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SCRIPT_CREATE_DATABASE);
fammi sapere, grazzie
-
Quote:
Originariamente inviato da
extrema
grazzie nikita1977 ci sono riuscito sequendo il tuo consiglio, ora pero vorrei provarlo a fare anche usando SUM iClaude76 ho notato che usa questo metodo mi daresti qualche dritta.
Fai bene perchè quella è la soluzione corretta.
Tengo solo a precisare che una while che fa somma girava in frazioni di secondo su programmi in c su pc intel 286....quindi non parliamo di carico cpu :)
Nik