Autore Topic: Più tabelle  (Letto 1186 volte)

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Più tabelle
« il: 12 Dicembre 2011, 19:49:14 CET »
0
Ciao ragazzi, avevo bisogno di un consiglio, devo gestire e salvare 2 tabelle in un DB, ho già creato la classe del database ed anche una delle 2 tabelle, ora se avessi bisogno di crearne un'altra di tabella nella stessa classe posso farlo ? ed inoltre nel momento in cui volessi visualizzare alcuni dati di tutte e 2 le tabelle in una lista tramite cursor, come dovrei fare?

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #1 il: 15 Dicembre 2011, 10:31:31 CET »
0
ho cambiato la classe database in questa maniera
Codice (Java): [Seleziona]
package com.deodato.Risparmia;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MyDatabase {  

        SQLiteDatabase mmDb;
        DbHelper mDbHelper;
        Context mContext;
        private static final String DB_NAME="tutodb";//nome del db
        private static final int DB_VERSION=1; //numero di versione del nostro db
       
        public MyDatabase(Context ctx){
                mContext=ctx;
                mDbHelper=new DbHelper(ctx, DB_NAME, null, DB_VERSION);
                //quando istanziamo questa classe, istanziamo anche l'helper (vedi sotto)      
        }
       
        public void read(){  //il database su cui agiamo è leggibile/scrivibile
                mmDb=mDbHelper.getReadableDatabase();
               
        }
       
        public void open(){  //il database su cui agiamo è leggibile/scrivibile
                mmDb=mDbHelper.getWritableDatabase();
               
        }
       
        public void close(){ //chiudiamo il database su cui agiamo
                mmDb.close();
        }
        public long createEntry(String entrata1, String importo1) {
        // TODO Auto-generated method stub
            ContentValues cv = new ContentValues();
            cv.put(ProductsMetaData.ENTRATA_NOME_KEY, entrata1);
            cv.put(ProductsMetaData.ENTRATA_IMPORTO_KEY, importo1);
            return mmDb.insert(ProductsMetaData.ENTRATA_TABLE, null, cv);
    }
        public String getData() {
        // TODO Auto-generated method stub
        //nell'array columns aggiungi tutti i campi di cui vuoi ottenere i dati
        String[] columns = new String[] { ProductsMetaData.ENTRATA_NOME_KEY, ProductsMetaData.ENTRATA_IMPORTO_KEY };
        Cursor c = mmDb.query(ProductsMetaData.ENTRATA_TABLE, columns, null, null, null,
                        null, null);
        String result = "";

        int iNome = c.getColumnIndex(ProductsMetaData.ENTRATA_NOME_KEY);
        int iImporto = c.getColumnIndex(ProductsMetaData.ENTRATA_IMPORTO_KEY);

        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
                result = result + c.getString(iNome) + " " + c.getString(iImporto)
                                + "\n";
        }

        return result;
}
       
        public String getData1() {
        // TODO Auto-generated method stub
        //nell'array columns aggiungi tutti i campi di cui vuoi ottenere i dati
        String[] columns = new String[] { ProductsMetaData1.USCITA_NOME_KEY, ProductsMetaData1.USCITA_IMPORTO_KEY };
        Cursor c = mmDb.query(ProductsMetaData1.USCITA_TABLE, columns, null, null, null,
                        null, null);
        String result = "";

        int iNome = c.getColumnIndex(ProductsMetaData1.USCITA_NOME_KEY);
        int iImporto = c.getColumnIndex(ProductsMetaData1.USCITA_IMPORTO_KEY);

        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
                result = result + c.getString(iNome) + " " + c.getString(iImporto)
                                + "\n";
        }

        return result;
}
       
       
        //i seguenti 2 metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione
       
        public void insertEntrata(String entrata ,double d,String data, String categoria, int id_cat, String note ){ //metodo per inserire i dati
                ContentValues cv=new ContentValues();
                //cv.put(ProductsMetaData.ENTRATA_ID , id);
                cv.put(ProductsMetaData.ENTRATA_NOME_KEY, entrata);
                cv.put(ProductsMetaData.ENTRATA_IMPORTO_KEY, d);
                cv.put(ProductsMetaData.ENTRATA_DATA_KEY, data);
                cv.put(ProductsMetaData.ENTRATA_CATEGORIA_KEY, categoria);
                cv.put(ProductsMetaData.ENTRATA_ID_CAT_KEY, id_cat );
                cv.put(ProductsMetaData.ENTRATA_NOTE_KEY, note);
                mmDb.insert(ProductsMetaData.ENTRATA_TABLE, null, cv);
        }
       
        public void insertUscita(String uscita ,double d,String data, String categoria, int id_cat, String note ){ //metodo per inserire i dati
                ContentValues cvv=new ContentValues();
                //cv.put(ProductsMetaData.ENTRATA_ID , id);
                cvv.put(ProductsMetaData1.USCITA_NOME_KEY, uscita);
                cvv.put(ProductsMetaData1.USCITA_IMPORTO_KEY, d);
                cvv.put(ProductsMetaData1.USCITA_DATA_KEY, data);
                cvv.put(ProductsMetaData1.USCITA_CATEGORIA_KEY, categoria);
                cvv.put(ProductsMetaData1.USCITA_ID_CAT_KEY, id_cat );
                cvv.put(ProductsMetaData1.USCITA_NOTE_KEY, note);
                mmDb.insert(ProductsMetaData1.USCITA_TABLE, null, cvv);
        }
       
        public Cursor fetchProducts(){ //metodo per fare la query di tutti i dati
                return mmDb.query(ProductsMetaData.ENTRATA_TABLE, null, null, null, null, null, null);         
        }
       
        public Cursor fetchProducts1(){ //metodo per fare la query di tutti i dati
                return mmDb.query(ProductsMetaData1.USCITA_TABLE, null, null, null, null, null, null);         
        }
       
        public Cursor byId(int Id)
    {
        return mmDb.rawQuery("select * from " + ProductsMetaData.ENTRATA_TABLE + " where " + ProductsMetaData.ID + "=" + Id  , null);
    }
       
        public Cursor byId1(int Id)
    {
        return mmDb.rawQuery("select * from " + ProductsMetaData1.USCITA_TABLE + " where " + ProductsMetaData1.ID + "=" + Id  , null);
    }

        public void update_byID(int id, String entrata ,double d,String data, String categoria, int id_cat, String note){
                ContentValues values = new ContentValues();
                values.put(ProductsMetaData.ENTRATA_NOME_KEY, entrata);
                values.put(ProductsMetaData.ENTRATA_IMPORTO_KEY, d);
                values.put(ProductsMetaData.ENTRATA_DATA_KEY, data);
                values.put(ProductsMetaData.ENTRATA_CATEGORIA_KEY, categoria);
                values.put(ProductsMetaData.ENTRATA_ID_CAT_KEY, id_cat);
                values.put(ProductsMetaData.ENTRATA_NOTE_KEY, note);
                mmDb.update(ProductsMetaData.ENTRATA_TABLE, values, ProductsMetaData.ID+"="+id, null);
        }
       
        public void update_byID1(int id, String uscita ,double d,String data, String categoria, int id_cat, String note){
                ContentValues values = new ContentValues();
                values.put(ProductsMetaData1.USCITA_NOME_KEY, uscita);
                values.put(ProductsMetaData1.USCITA_IMPORTO_KEY, d);
                values.put(ProductsMetaData1.USCITA_DATA_KEY, data);
                values.put(ProductsMetaData1.USCITA_CATEGORIA_KEY, categoria);
                values.put(ProductsMetaData1.USCITA_ID_CAT_KEY, id_cat);
                values.put(ProductsMetaData1.USCITA_NOTE_KEY, note);
                mmDb.update(ProductsMetaData1.USCITA_TABLE, values, ProductsMetaData1.ID+"="+id, null);
        }

        static class ProductsMetaData {
               
                 public static final String ENTRATA_TABLE = "products";
                 public static final String ID = "_id";
             static final String ENTRATA_NOTE_KEY = "Note";
                 static final String ENTRATA_ID_CAT_KEY = "id_cat";
                 static final String ENTRATA_CATEGORIA_KEY = "Categoria";
                 static final String ENTRATA_DATA_KEY = "Data";
                 static final String ENTRATA_IMPORTO_KEY = "Importo";
                 static final String ENTRATA_NOME_KEY = "Nome";
       
        }
       
        static class ProductsMetaData1 {
               
                 public static final String USCITA_TABLE = "products";
                 public static final String ID = "_id";
             static final String USCITA_NOTE_KEY = "Note";
                 static final String USCITA_ID_CAT_KEY = "id_cat";
                 static final String USCITA_CATEGORIA_KEY = "Categoria";
                 static final String USCITA_DATA_KEY = "Data";
                 static final String USCITA_IMPORTO_KEY = "Importo";
                 static final String USCITA_NOME_KEY = "Nome";
       
        }
        public boolean deleteNote(long rowId) {

        return mmDb.delete(ProductsMetaData.ENTRATA_TABLE, ProductsMetaData.ID + "=" + rowId, null) > 0;
    }
        public boolean deleteNoteu(long rowId) {

        return mmDb.delete(ProductsMetaData1.USCITA_TABLE, ProductsMetaData1.ID + "=" + rowId, null) > 0;
    }

        public void deleteNote1(String rowId) {

         mmDb.delete(ProductsMetaData.ENTRATA_TABLE, rowId, null) ;
    }
       
        public void deleteNote11(String rowId) {

        mmDb.delete(ProductsMetaData1.USCITA_TABLE, rowId, null) ;
   }
       
        private static final String ENTRATA_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
               
                     
                      + ProductsMetaData.ENTRATA_TABLE + " ("
                      + ProductsMetaData.ID+ " integer primary key autoincrement, "
                      + ProductsMetaData.ENTRATA_NOME_KEY + " text not null, "
                      + ProductsMetaData.ENTRATA_IMPORTO_KEY + " doble not null, "
                      + ProductsMetaData.ENTRATA_DATA_KEY + " text not null, "
                      + ProductsMetaData.ENTRATA_CATEGORIA_KEY + " text not null, "
                      + ProductsMetaData.ENTRATA_ID_CAT_KEY + " integer not null, "
                      + ProductsMetaData.ENTRATA_NOTE_KEY + " text not null);";
                 

        private class DbHelper extends SQLiteOpenHelper { //classe che ci aiuta nella creazione del db

                public DbHelper(Context context, String name, CursorFactory factory,int version) {
                        super(context, name, factory, version);
                }

                @Override
                public void onCreate(SQLiteDatabase _db) { //solo quando il db viene creato, creiamo la tabella
                        _db.execSQL(ENTRATA_TABLE_CREATE);
                }
               

                @Override
                public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) {
                        //qui mettiamo eventuali modifiche al db, se nella nostra nuova versione della app, il db cambia numero di versione
                        //Log.w("Example", "Upgrading database, this will drop tables and recreate.");
                // _db.execSQL("DROP TABLE IF EXISTS " + ENTRATA_TABLE_CREATE);
                // onCreate(_db);
                }
                private static final String USCITA_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
               
                     
                      + ProductsMetaData1.USCITA_TABLE + " ("
                      + ProductsMetaData1.ID+ " integer primary key autoincrement, "
                      + ProductsMetaData1.USCITA_NOME_KEY + " text not null, "
                      + ProductsMetaData1.USCITA_IMPORTO_KEY + " doble not null, "
                      + ProductsMetaData1.USCITA_DATA_KEY + " text not null, "
                      + ProductsMetaData1.USCITA_CATEGORIA_KEY + " text not null, "
                      + ProductsMetaData1.USCITA_ID_CAT_KEY + " integer not null, "
                      + ProductsMetaData1.USCITA_NOTE_KEY + " text not null);";

                @SuppressWarnings("unused")
                private class DbHelper1 extends SQLiteOpenHelper { //classe che ci aiuta nella creazione del db

                        public DbHelper1(Context context, String name, CursorFactory factory,int version) {
                                super(context, name, factory, version);
                        }

                        @Override
                        public void onCreate(SQLiteDatabase _db) { //solo quando il db viene creato, creiamo la tabella
                                _db.execSQL(USCITA_TABLE_CREATE);
                        }

                        @Override
                        public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) {
                               
                        }
        }
        }
}
ma quando vado a fare inserimento e poi succesivamente la visualizzazione, se richiamo solo i dati dell'altra tabella mi visualizza tutto come mai?
Codice (Java): [Seleziona]
Cursor c=db.fetchProducts();
        startManagingCursor(c);
       
        SimpleCursorAdapter adapter=new SimpleCursorAdapter(
                        this, R.layout.product, c,
                        new String[]{
                                        MyDatabase.ProductsMetaData.ENTRATA_IMPORTO_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_CATEGORIA_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_ID_CAT_KEY},
                                       
                                        new int[]{R.id.priceTv1,R.id.priceTv,R.id.imageView11});
        mList.setAdapter(adapter);
cosa sbaglio?

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #2 il: 17 Dicembre 2011, 11:54:07 CET »
0
Nessuno può indirizzarmi sulla strada giusta??? :'(

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Più tabelle
« Risposta #3 il: 17 Dicembre 2011, 12:22:39 CET »
0
Ma che casino hai nel codice??

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #4 il: 17 Dicembre 2011, 16:15:21 CET »
0
cosa sbaglio? sono qui per imparare

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Più tabelle
« Risposta #5 il: 17 Dicembre 2011, 16:18:58 CET »
0
Hai due dbhelper, metodi e costanti che si chiamano uguali a differenza di un 1 finale o una u finale.... se posti codice per chiedere assistenza assicurati che sia comprensibile altrimenti passa la voglia di leggerlo. Inizia a dargli una pulita e dai ai metodi nomi che abbiamo un senso.

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #6 il: 17 Dicembre 2011, 16:38:07 CET »
0
Codice (Java): [Seleziona]
package com.deodato.Risparmia;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MyDatabase {  

        SQLiteDatabase mmDb;
        DbHelper mDbHelper;
        Context mContext;
        private static final String DB_NAME="tutodb";//nome del db
        private static final int DB_VERSION=1; //numero di versione del nostro db
       
        public MyDatabase(Context ctx){
                mContext=ctx;
                mDbHelper=new DbHelper(ctx, DB_NAME, null, DB_VERSION);
                //quando istanziamo questa classe, istanziamo anche l'helper (vedi sotto)      
        }
       
        public void read(){  //il database su cui agiamo è leggibile/scrivibile
                mmDb=mDbHelper.getReadableDatabase();
               
        }
       
        public void open(){  //il database su cui agiamo è leggibile/scrivibile
                mmDb=mDbHelper.getWritableDatabase();
               
        }
       
        public void close(){ //chiudiamo il database su cui agiamo
                mmDb.close();
        }
       
       
        //i seguenti metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione
       
        public void insertEntrata(String entrata ,double d,String data, String categoria, int id_cat, String note ){ //metodo per inserire i dati
                ContentValues cv=new ContentValues();
                //cv.put(ProductsMetaData.ENTRATA_ID , id);
                cv.put(ProductsMetaData.ENTRATA_NOME_KEY, entrata);
                cv.put(ProductsMetaData.ENTRATA_IMPORTO_KEY, d);
                cv.put(ProductsMetaData.ENTRATA_DATA_KEY, data);
                cv.put(ProductsMetaData.ENTRATA_CATEGORIA_KEY, categoria);
                cv.put(ProductsMetaData.ENTRATA_ID_CAT_KEY, id_cat );
                cv.put(ProductsMetaData.ENTRATA_NOTE_KEY, note);
                mmDb.insert(ProductsMetaData.ENTRATA_TABLE, null, cv);
        }
       
        public void insertUscita(String uscita ,double d,String data, String categoria, int id_cat, String note ){ //metodo per inserire i dati
                ContentValues cvv=new ContentValues();
               
                cvv.put(ProductsMetaDataUsc.USCITA_NOME_KEY, uscita);
                cvv.put(ProductsMetaDataUsc.USCITA_IMPORTO_KEY, d);
                cvv.put(ProductsMetaDataUsc.USCITA_DATA_KEY, data);
                cvv.put(ProductsMetaDataUsc.USCITA_CATEGORIA_KEY, categoria);
                cvv.put(ProductsMetaDataUsc.USCITA_ID_CAT_KEY, id_cat );
                cvv.put(ProductsMetaDataUsc.USCITA_NOTE_KEY, note);
                mmDb.insert(ProductsMetaDataUsc.USCITA_TABLE, null, cvv);
        }
       
        public Cursor fetchProductsEntrata(){ //metodo per fare la query di tutti i dati
                return mmDb.query(ProductsMetaData.ENTRATA_TABLE, null, null, null, null, null, null);        
        }
       
        public Cursor fetchProductsUscita(){ //metodo per fare la query di tutti i dati
                return mmDb.query(ProductsMetaDataUsc.USCITA_TABLE, null, null, null, null, null, null);        
        }
       
        public Cursor byIdEntrata(int Id)
    {
        return mmDb.rawQuery("select * from " + ProductsMetaData.ENTRATA_TABLE + " where " + ProductsMetaData.ID + "=" + Id  , null);
    }
       
        public Cursor byIdUscita(int Id)
    {
        return mmDb.rawQuery("select * from " + ProductsMetaDataUsc.USCITA_TABLE + " where " + ProductsMetaDataUsc.ID + "=" + Id  , null);
    }

        public void update_byID(int id, String entrata ,double d,String data, String categoria, int id_cat, String note){
                ContentValues values = new ContentValues();
                values.put(ProductsMetaData.ENTRATA_NOME_KEY, entrata);
                values.put(ProductsMetaData.ENTRATA_IMPORTO_KEY, d);
                values.put(ProductsMetaData.ENTRATA_DATA_KEY, data);
                values.put(ProductsMetaData.ENTRATA_CATEGORIA_KEY, categoria);
                values.put(ProductsMetaData.ENTRATA_ID_CAT_KEY, id_cat);
                values.put(ProductsMetaData.ENTRATA_NOTE_KEY, note);
                mmDb.update(ProductsMetaData.ENTRATA_TABLE, values, ProductsMetaData.ID+"="+id, null);
        }
       
        public void update_byIDUscita(int id, String uscita ,double d,String data, String categoria, int id_cat, String note){
                ContentValues values = new ContentValues();
                values.put(ProductsMetaDataUsc.USCITA_NOME_KEY, uscita);
                values.put(ProductsMetaDataUsc.USCITA_IMPORTO_KEY, d);
                values.put(ProductsMetaDataUsc.USCITA_DATA_KEY, data);
                values.put(ProductsMetaDataUsc.USCITA_CATEGORIA_KEY, categoria);
                values.put(ProductsMetaDataUsc.USCITA_ID_CAT_KEY, id_cat);
                values.put(ProductsMetaDataUsc.USCITA_NOTE_KEY, note);
                mmDb.update(ProductsMetaDataUsc.USCITA_TABLE, values, ProductsMetaDataUsc.ID+"="+id, null);
        }

        static class ProductsMetaData {
               
                 public static final String ENTRATA_TABLE = "products";
                 public static final String ID = "_id";
                 static final String ENTRATA_NOTE_KEY = "Note";
                 static final String ENTRATA_ID_CAT_KEY = "id_cat";
                 static final String ENTRATA_CATEGORIA_KEY = "Categoria";
                 static final String ENTRATA_DATA_KEY = "Data";
                 static final String ENTRATA_IMPORTO_KEY = "Importo";
                 static final String ENTRATA_NOME_KEY = "Nome";
       
        }
       
        static class ProductsMetaDataUsc {
               
                 public static final String USCITA_TABLE = "products";
                 public static final String ID = "_id";
                 static final String USCITA_NOTE_KEY = "Note";
                 static final String USCITA_ID_CAT_KEY = "id_cat";
                 static final String USCITA_CATEGORIA_KEY = "Categoria";
                 static final String USCITA_DATA_KEY = "Data";
                 static final String USCITA_IMPORTO_KEY = "Importo";
                 static final String USCITA_NOME_KEY = "Nome";
       
        }
        public boolean deleteNote(long rowId) {

        return mmDb.delete(ProductsMetaData.ENTRATA_TABLE, ProductsMetaData.ID + "=" + rowId, null) > 0;
    }
        public boolean deleteNoteUsc(long rowId) {

        return mmDb.delete(ProductsMetaDataUsc.USCITA_TABLE, ProductsMetaDataUsc.ID + "=" + rowId, null) > 0;
    }

        public void deleteNoteTOT(String rowId) {

         mmDb.delete(ProductsMetaData.ENTRATA_TABLE, rowId, null) ;
    }
       
        public void deleteNoteTOTUsc(String rowId) {

        mmDb.delete(ProductsMetaDataUsc.USCITA_TABLE, rowId, null) ;
   }
       
        private static final String ENTRATA_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
               
                     
                      + ProductsMetaData.ENTRATA_TABLE + " ("
                      + ProductsMetaData.ID+ " integer primary key autoincrement, "
                      + ProductsMetaData.ENTRATA_NOME_KEY + " text not null, "
                      + ProductsMetaData.ENTRATA_IMPORTO_KEY + " doble not null, "
                      + ProductsMetaData.ENTRATA_DATA_KEY + " text not null, "
                      + ProductsMetaData.ENTRATA_CATEGORIA_KEY + " text not null, "
                      + ProductsMetaData.ENTRATA_ID_CAT_KEY + " integer not null, "
                      + ProductsMetaData.ENTRATA_NOTE_KEY + " text not null);";
                 

        private class DbHelper extends SQLiteOpenHelper { //classe che ci aiuta nella creazione del db

                public DbHelper(Context context, String name, CursorFactory factory,int version) {
                        super(context, name, factory, version);
                }

                @Override
                public void onCreate(SQLiteDatabase _db) { //solo quando il db viene creato, creiamo la tabella
                        _db.execSQL(ENTRATA_TABLE_CREATE);
                        _db.execSQL(USCITA_TABLE_CREATE);
                }
               

                @Override
                public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) {
                        //qui mettiamo eventuali modifiche al db, se nella nostra nuova versione della app, il db cambia numero di versione
                     
                }

                private static final String USCITA_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
               
                     
                      + ProductsMetaDataUsc.USCITA_TABLE + " ("
                      + ProductsMetaDataUsc.ID+ " integer primary key autoincrement, "
                      + ProductsMetaDataUsc.USCITA_NOME_KEY + " text not null, "
                      + ProductsMetaDataUsc.USCITA_IMPORTO_KEY + " doble not null, "
                      + ProductsMetaDataUsc.USCITA_DATA_KEY + " text not null, "
                      + ProductsMetaDataUsc.USCITA_CATEGORIA_KEY + " text not null, "
                      + ProductsMetaDataUsc.USCITA_ID_CAT_KEY + " integer not null, "
                      + ProductsMetaDataUsc.USCITA_NOTE_KEY + " text not null);";

        }
}

Ho immaginato che si creassero così 2 tabelle nello stesso database

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Più tabelle
« Risposta #7 il: 17 Dicembre 2011, 16:48:53 CET »
0
Già meglio :)
Ma scusa, perchè vuoi creare due tabelle diverse che hanno gli stessi campi e addirittura lo steso nome?  ???

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #8 il: 17 Dicembre 2011, 17:07:49 CET »
0
perchè devo salvare i dati di uscite e quelli delle entrate e ho immaginato dovessi usare 2 tabelle, sopratutto xchè poi nella visualizzazione mi serve visualizzare la categoria dell'entrata o dell'uscita, che sono ovviamente differenti da uscite ed entrate, e il loro rispettivo valore in euro, e quindi quello delle entrate con sfondo verde e quello delle uscite con sfondo rosso e segno negativo messo di precedenza, ed ovviamente riservarmi anche la possibilità di cancellare o modificare una voce selezionata, no? :-\

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Più tabelle
« Risposta #9 il: 17 Dicembre 2011, 17:10:31 CET »
0
Non basta usare una tabella sola e aggiungere un campo (un intero che può valere 0 o 1) e che ti dice se è una entrata o una uscita?

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #10 il: 17 Dicembre 2011, 17:21:57 CET »
0
c'avevo pensato, ma poi come faccio ad avere quella visualizzazione che ti ho detto prima?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Più tabelle
« Risposta #11 il: 17 Dicembre 2011, 17:31:26 CET »
+1
Beh facendo delle opportune query...

Mettiamo caso che metti un campo uscita che se vale 1 vuol dire che il record è un'uscita altrimenti è una entrata

Uscite: SELECT * from tabelle where uscita = 1;
Entrare: SELECT * from tabella where uscita = 0;
Totale uscite: SELECT SUM(valore) from tabelle where uscita = 1;
Totale entrate:  SELECT SUM(valore) from tabella where uscita = 0;

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #12 il: 17 Dicembre 2011, 17:37:49 CET »
0
fino ad ora ho usato questo metodo per visualizzare i dati che mi interessavano
Codice (Java): [Seleziona]
Cursor c=db.fetchProducts();
        startManagingCursor(c);
       
        SimpleCursorAdapter adapter=new SimpleCursorAdapter(
                        this, R.layout.product, c,
                        new String[]{
                                        MyDatabase.ProductsMetaData.ENTRATA_IMPORTO_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_CATEGORIA_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_ID_CAT_KEY},
                                       
                                        new int[]{R.id.priceTv1,R.id.priceTv,R.id.imageView11});
        mList.setAdapter(adapter);
in questo caso come dovrei fare ?

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Più tabelle
« Risposta #13 il: 20 Dicembre 2011, 11:57:47 CET »
0
oppure avete esempi su MergeCursor o CursorJoiner ?