Autore Topic: Gestione ed aggiornamento database  (Letto 3273 volte)

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Gestione ed aggiornamento database
« il: 21 Novembre 2011, 16:52:29 CET »
0
Salve ragazzi, ho un problema con la mia app, grazie al tutorial di Qlimax sulla creazione di un database, sono riuscito a crearne uno che ho agganciato all'applicazione per salvare i dati che immetto tramite edit text ed altro, ora arrivano i problemi :
1. come faccio ad aggiornare il database per poter visualizzare in un'altra pagina i dati appena inseriti? Ho fatto una prova in questo modo :
Codice (Java): [Seleziona]
.
.
 Button salva = (Button) findViewById(R.id.imageButton7);
        salva.setOnClickListener(new OnClickListener() {

                MyDatabase db=new MyDatabase(getApplicationContext());
       
            public void onClick(View v) {
               
                db.open();
               
                if(db.fetchProducts().getCount()==0){//inserimento dati
               
                       db.insertEntrata( "TV", 400, "12-11-11", "Intrattenimento", 4, "nuovo tv" );
                   
                }
                db.close();
               
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }
        });    
.
.

ma non mi visualizza i dati che inserisco manualmente da codice al click del button salva;

2. Come faccio a inserire nel database i dati degli edit text che ho digitato dall'app, e non inserirli da codice come ho fatto prima?

Aiutatemi, so che solo voi potete :-)
« Ultima modifica: 21 Novembre 2011, 16:54:19 CET da deideidei »

Zate

  • Visitatore
Re:Gestione ed aggiornamento database
« Risposta #1 il: 21 Novembre 2011, 16:58:43 CET »
0
Io ho fatto in questo modo:
Codice (Java): [Seleziona]
HotOrNot entry = new HotOrNot(SQLiteExample.this);
entry.open();
entry.createEntry(name, hotness);
entry.close();
Dove HotOrNot è il DatabaseHelper e SQLiteExample l'activity.
name e hotness sono due stringhe prese da due edittext.
Poi, nel DatabaseHelper:
Codice (Java): [Seleziona]
public long createEntry(String name, String hotness) {
                // TODO Auto-generated method stub
                ContentValues cv = new ContentValues();
                cv.put(KEY_NAME, name);
                cv.put(KEY_HOTNESS, hotness);
                return ourDatabase.insert(DATABASE_TABLE, null, cv);
        }

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #2 il: 21 Novembre 2011, 17:32:34 CET »
0
Quindi il primo pezzo di codice lo inserisco nell'on click? e mi serve per inserire i dati nel database?
 invece per visualizzare i dati appena inseriti in un'altra pagina come faccio? visto che non me li fa vadere

P.S. ho usato questo tutorial per il mio database [medio] Creazione e utilizzo di un database SQLite - Android Developers Italia

Zate

  • Visitatore
Re:Gestione ed aggiornamento database
« Risposta #3 il: 21 Novembre 2011, 22:27:17 CET »
0
Codice (Java): [Seleziona]
HotOrNot entry = new HotOrNot(SQLiteExample.this);
entry.open();
entry.createEntry(name, hotness);
entry.close();
Questo va messo nell'onClick, ma devi sostituire ovviamente HotOrNot con il nome del SQLiteOpenHelper, SQLiteExample con il nome della classe, name con il nome della stringa che vuoi inserire nel database e idem per hotness (nell'esempio che avevo seguito si usavano due stringhe, ma non è necessario usarne due).
Se non lo avessi capito, createEntry è un metodo creato appunto per creare una nuova entry nel database.
Codice (Java): [Seleziona]
public long createEntry(String name, String hotness) {
                // TODO Auto-generated method stub
                ContentValues cv = new ContentValues();
                cv.put(KEY_NAME, name);
                cv.put(KEY_HOTNESS, hotness);
                return ourDatabase.insert(DATABASE_TABLE, null, cv);
        }
Questo è il metodo creato dove inseriamo nel database le stringe name e hotness.

Per visualizzare i dati invece devi usare un Cursor.

Intanto ti consiglio di guardare questi tutorial su SQLite, sono un po' più approfonditi rispetto a quello da te linkato.
http://www.youtube.com/watch?v=1JyC_xv20yE&feature=relmfu
« Ultima modifica: 21 Novembre 2011, 22:29:11 CET da Zate »

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #4 il: 22 Novembre 2011, 13:36:39 CET »
0
Perdonami ma non riesco ad adattare le cose che mi hai detto alla mia app, scusami ma sono inesperto e sto avendo un po di difficoltà.
Ti posto le mie 3 activity:
1. Classe database
Codice (Java): [Seleziona]
package com.deodato.databasegiusto;

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;
import android.util.Log;

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 2 metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione
       
        public void insertEntrata(String entrata ,String d,String data, String categoria, int id_cat, String note ){ //metodo per inserire i dati
                ContentValues cv=new ContentValues();
               
                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 Cursor fetchProducts(){ //metodo per fare la query di tutti i dati
                return mmDb.query(ProductsMetaData.ENTRATA_TABLE, null,null,null,null,null,null);              
        }

        static class ProductsMetaData {
               
                 static final String ENTRATA_TABLE = "products";
                 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";
       
        }
        public boolean deleteNote(long rowId) {

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

        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
                       
                }

        }

}

2. classe del main dove ho un button che mi riporta ad una pagina di inserimento, ed anche textview e listview per visualizzare i dati salvati ed immessi nella successiva activity:
Codice (Java): [Seleziona]
package com.deodato.databasegiusto;


import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class Main extends Activity {
        Intent intent;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
       
        intent=new Intent(getApplicationContext(), Inserimento.class);
       
        Button button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                startActivity(intent); //facciamo partire l'activity
                               
                        }
                });
         
        TextView productsTv=(TextView)findViewById(R.id.productsTv);
     
       
        ListView productsLv=(ListView)findViewById(R.id.listView1);
       
        MyDatabase db=new MyDatabase(getApplicationContext());
        db.read();  //apriamo il db
       
       // lo aggiungo se voglio inserire dati manualmente
       // if(db.fetchProducts().getCount()==0){//inserimento dati
       
                //db.insertEntrata( "Telefono", 400, "12-11-11", "Intrattenimento", 4, "deidei" );
                //db.insertEntrata( "Scarpe", 100.30, "11-11-11", "Amore", 5, "rinirini");
                //db.insertEntrata( "Scarpe", 100.30, "11-11-11", "Amore", 5, "rinirini");
                //db.insertEntrata( "Scarpe", 100.30, "11-11-11", "Amore", 5, "rinirini");
                //db.insertEntrata( "Scarpe", 100.30, "11-11-11", "Amore", 5, "rinirini");
                //db.insertEntrata( "Scarpe", 100.30, "11-11-11", "Amore", 5, "rinirini");
               
               
       
       // }
       
       

        Cursor c=db.fetchProducts(); // query
        startManagingCursor(c);

       
        SimpleCursorAdapter adapter=new SimpleCursorAdapter( //semplice adapter per i cursor
                        this,
                        R.layout.product, //il layout di ogni riga/prodotto
                        c,
                        new String[]{MyDatabase.ProductsMetaData.ENTRATA_NOME_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_IMPORTO_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_DATA_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_CATEGORIA_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_ID_CAT_KEY,
                                        MyDatabase.ProductsMetaData.ENTRATA_NOTE_KEY},//questi colonne
                                       
                        new int[]{R.id.nameTv,R.id.priceTv,R.id.priceTv1,R.id.priceTv2,
                                        R.id.priceTv3,R.id.priceTv4});//in queste views
     
        productsLv.setAdapter(adapter); //la listview ha questo adapter
       
 
        //qui vediamo invece come reperire i dati e usarli, in questo caso li stampiamo in una textview
       
        int nameCol=c.getColumnIndex(MyDatabase.ProductsMetaData.ENTRATA_NOME_KEY);  //indici delle colonne
        int priceCol=c.getColumnIndex(MyDatabase.ProductsMetaData.ENTRATA_IMPORTO_KEY);      
       
        if(c.moveToFirst()){  //se va alla prima entry, il cursore non è vuoto
                do {
                               
                        productsTv.append("Nome:"+c.getString(nameCol)+", Importo:"+c.getInt(priceCol)+"\n"); //estrazione dei dati dalla entry del cursor
                                       
                        } while (c.moveToNext());//iteriamo al prossimo elemento
        }
       
        db.close();
       
       
       
    }
}

3. la classe dell'inserimento e del salvataggio dei dati che per ora ho agganciato  solo a 2 edit text per provare il procedimento:
Codice (Java): [Seleziona]
package com.deodato.databasegiusto;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;

public class Inserimento extends Activity {
       
        Intent cate, ini;
       
    private TextView mDateDisplay;
    private Button mPickDate;
    private int mYear;
    private int mMonth;
    private int mDay;
   

    static final int DATE_DIALOG_ID = 0;
   
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inserimento);

        Button next = (Button) findViewById(R.id.imageButton5);
        next.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }

        });
       
        //ini=new Intent(getApplicationContext(), Cate_ins.class);
        Button salva = (Button) findViewById(R.id.imageButton7);
        salva.setOnClickListener(new OnClickListener() {

                MyDatabase db=new MyDatabase(getApplicationContext());
           
            public void onClick(View v) {
                // TODO Auto-generated method stub
                        EditText entrata = (EditText)findViewById(R.id.editText1);
                        String entrata1 = entrata.getText().toString();
                       
                        EditText importo = (EditText)findViewById(R.id.editText2);
                        String importo1 = importo.getText().toString();
                       
                db.open();
               
                if(db.fetchProducts().getCount()==0){//inserimento dati
               
                       db.insertEntrata( entrata1, importo1, "12-11-11", "Intrattenimento", 4, "deidei" );
                     
                       
                }
               
                db.close();
               
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }
        });    
       
        cate=new Intent(getApplicationContext(), Cate_ins.class);
       
        Button cat = (Button) findViewById(R.id.button_cat_ness);
        cat.setOnClickListener(new OnClickListener() {

       
            public void onClick(View v) {
                // TODO Auto-generated method stub

                startActivityForResult(cate, 1);
            }
        });
       
       
       
        // capture our View elements
        mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
        mPickDate = (Button) findViewById(R.id.pickDate);

        // add a click listener to the button
        mPickDate.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(DATE_DIALOG_ID);
            }
        });

        // get the current date
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

        // display the current date (this method is below)
        updateDisplay();
    }
 // updates the date in the TextView
    private void updateDisplay() {
        mDateDisplay.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                   
                    .append(mDay).append("-")
                    .append(mMonth + 1).append("-")
                    .append(mYear).append(" "));
    }
 
    // the callback received when the user "sets" the date in the dialog
    private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    mYear = year;
                    mMonth = monthOfYear;
                    mDay = dayOfMonth;
                    updateDisplay();
                }

                               
            };
            @Override
            protected Dialog onCreateDialog(int id) {
                switch (id) {
                case DATE_DIALOG_ID:
                    return new DatePickerDialog(this,
                                mDateSetListener,
                                mYear, mMonth, mDay);
                }
                return null;
 }
           
           
            protected void onActivityResult(int requestCode, int resultCode, Intent data)
                {
               
                Button cat = (Button) findViewById(R.id.button_cat_ness);
                //TextView text = (TextView)this.findViewById(R.id.button_cat_ness);
                super.onActivityResult(requestCode, resultCode, data);
                  if(resultCode==RESULT_OK && requestCode==1){
                   
                   int background=data.getIntExtra("buttonBackground",0);
                   String msg = data.getStringExtra("android:text");
                   cat.setText(msg);
                   cat.setCompoundDrawablesWithIntrinsicBounds(background, 0, 0, 0);
                 
                    } }
                 
           

}

ovviamente quello che mi interessa è l'onclick del button salva.
Mi salva i dati in questo modo, ma quando ritorno nella pagina della visualizzazione dei dati, ovvero la 2, mi ritorna i dati precedenti senza l'aggiunta di quelli nuovi che ho appena inserito.

Come posso fare??? :-(

Zate

  • Visitatore
Re:Gestione ed aggiornamento database
« Risposta #5 il: 22 Novembre 2011, 15:18:20 CET »
0
Ok, proviamo a risolvere un problema alla volta.
Codice (Java): [Seleziona]
package com.deodato.databasegiusto;

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;
import android.util.Log;

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 ourDatabase.insert(DATABASE_TABLE, null, cv);
            }
       
       
        //i seguenti 2 metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione
       
        public void insertEntrata(String entrata ,String d,String data, String categoria, int id_cat, String note ){ //metodo per inserire i dati
                ContentValues cv=new ContentValues();
               
                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 Cursor fetchProducts(){ //metodo per fare la query di tutti i dati
                return mmDb.query(ProductsMetaData.ENTRATA_TABLE, null,null,null,null,null,null);              
        }

        static class ProductsMetaData {
               
                 static final String ENTRATA_TABLE = "products";
                 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";
       
        }
        public boolean deleteNote(long rowId) {

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

        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
                       
                }

        }

}
Ho aggiunto createEntry(String,String): un metodo creato nella classe inserimento, la quale diventa:
Codice (Java): [Seleziona]
package com.deodato.databasegiusto;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;

public class Inserimento extends Activity {
       
        Intent cate, ini;
       
    private TextView mDateDisplay;
    private Button mPickDate;
    private int mYear;
    private int mMonth;
    private int mDay;
   

    static final int DATE_DIALOG_ID = 0;
   
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inserimento);

        Button next = (Button) findViewById(R.id.imageButton5);
        next.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }

        });
       
        //ini=new Intent(getApplicationContext(), Cate_ins.class);
        Button salva = (Button) findViewById(R.id.imageButton7);
        salva.setOnClickListener(new OnClickListener() {
           
            public void onClick(View v) {
                // TODO Auto-generated method stub
                        EditText entrata = (EditText)findViewById(R.id.editText1);
                        String entrata1 = entrata.getText().toString();
                       
                        EditText importo = (EditText)findViewById(R.id.editText2);
                        String importo1 = importo.getText().toString();
                                               
                                                MyDatabase db=new MyDatabase(getApplicationContext());
                       
                db.open();
               
                db.createEntry(entrata1,importo1);
                               
                db.close();
               
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }
        });    
       
        cate=new Intent(getApplicationContext(), Cate_ins.class);
       
        Button cat = (Button) findViewById(R.id.button_cat_ness);
        cat.setOnClickListener(new OnClickListener() {

       
            public void onClick(View v) {
                // TODO Auto-generated method stub

                startActivityForResult(cate, 1);
            }
        });
       
       
       
        // capture our View elements
        mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
        mPickDate = (Button) findViewById(R.id.pickDate);

        // add a click listener to the button
        mPickDate.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(DATE_DIALOG_ID);
            }
        });

        // get the current date
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

        // display the current date (this method is below)
        updateDisplay();
    }
 // updates the date in the TextView
    private void updateDisplay() {
        mDateDisplay.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                   
                    .append(mDay).append("-")
                    .append(mMonth + 1).append("-")
                    .append(mYear).append(" "));
    }
 
    // the callback received when the user "sets" the date in the dialog
    private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    mYear = year;
                    mMonth = monthOfYear;
                    mDay = dayOfMonth;
                    updateDisplay();
                }

                               
            };
            @Override
            protected Dialog onCreateDialog(int id) {
                switch (id) {
                case DATE_DIALOG_ID:
                    return new DatePickerDialog(this,
                                mDateSetListener,
                                mYear, mMonth, mDay);
                }
                return null;
 }
           
           
            protected void onActivityResult(int requestCode, int resultCode, Intent data)
                {
               
                Button cat = (Button) findViewById(R.id.button_cat_ness);
                //TextView text = (TextView)this.findViewById(R.id.button_cat_ness);
                super.onActivityResult(requestCode, resultCode, data);
                  if(resultCode==RESULT_OK && requestCode==1){
                   
                   int background=data.getIntExtra("buttonBackground",0);
                   String msg = data.getStringExtra("android:text");
                   cat.setText(msg);
                   cat.setCompoundDrawablesWithIntrinsicBounds(background, 0, 0, 0);
                 
                    } }
                 
           

}

Alla  Main per ora non ho apportato modifiche, facciamo una cosa per volta ;)
Dimmi se funziona, ma soprattutto se hai capito. Copiare e incollare senza capire è inutile.

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #6 il: 22 Novembre 2011, 16:41:47 CET »
0
Yess :-)
Ho provato, non mi da errori e l'app parte, anche se non mi visualizza il risultato nel main.
inoltre volevo chiederti che differenza c'è tra createEntry e insertEntrata? immagino che a questo punto come per insertEntrata posso aggiungere tutti i campi che mi servono nel database, ovviamente l'if come c'era prima non mi serve in quanto è solo un inserimento alla volta che devo fare, bene!
Purtroppo non visualizzo ancora niente, ti posto il file zip del progetto che sto usando per fare queste prove ed imparare ad usare il DB così da poterlo usare su una app

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #7 il: 22 Novembre 2011, 16:51:10 CET »
0
Però se al posto di
Codice (Java): [Seleziona]
db.createEntry(entrata1, importo1);uso
Codice (Java): [Seleziona]
db.insertEntrata(entrata1,importo1, "12-11-11", "Intrattenimento", 4, "deidei" );
Quando riavvio l'app mi viene visualizzato quello che ho inserito prima

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Gestione ed aggiornamento database
« Risposta #8 il: 22 Novembre 2011, 17:06:47 CET »
0
Scusa solo un accorgimento:
Citazione
+ 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);";

La riga in rosso non dovrebbe essere double ?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Zate

  • Visitatore
R: Gestione ed aggiornamento database
« Risposta #9 il: 22 Novembre 2011, 17:19:20 CET »
0
createEntry è un metodo creato da te. Puoi anche chiamarlo metodoperinseriredatineldatabase, ma dovrai cambiare il nome in entrambi le classi che hai utilizzato.
Appena torno sul computer ti aiuto con la visualizzazione ;-)

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #10 il: 22 Novembre 2011, 18:05:12 CET »
0
Aspetto  :-) Zate

Luigi.Arena. l'ho cambiato in corso d'opera perchè nell'inserimento non riuscivo a passare il boble rispetto alla string

Zate

  • Visitatore
Re:Gestione ed aggiornamento database
« Risposta #11 il: 22 Novembre 2011, 21:59:34 CET »
+1
Ho poco tempo, ti spiego il procedimento, poi però mi sa che toccherà a te adattarlo al tuo progetto ;)
In poche parole bisogna fare come per inserire un dato, ovvero:
nella classe Main aggiugni:
Codice (Java): [Seleziona]
MyDatabase info = new MyDatabase(this);
info.open();
String data = info.getData();
info.close();
//Tutti i dati del database sono contenuti nella stringa data
Mentre nella classe MyDatabase aggiungi:
Codice (Java): [Seleziona]
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[] { ENTRATA_NOME_KEY, ENTRATA_IMPORTO_KEY };
        Cursor c = mmDb.query(ENTRATA_TABLE, columns, null, null, null,
                        null, null);
        String result = "";

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

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

        return result;
}
e getData, come prima, è un metodo creato da te, quindi puoi chiamarlo come vuoi :)

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Gestione ed aggiornamento database
« Risposta #12 il: 23 Novembre 2011, 09:09:22 CET »
0
Aspetto  :-) Zate

Luigi.Arena. l'ho cambiato in corso d'opera perchè nell'inserimento non riuscivo a passare il boble rispetto alla string

OK,comunque blob o double ?
Era solo un osservazione.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #13 il: 23 Novembre 2011, 11:16:37 CET »
0
Grazie Zate,
mi compia tutto, però l'aggiornamento non lo fa nel main, adatto il codice al mio progetto e l'unica cosa che mi da come errorino è nella
Codice (Java): [Seleziona]
String data = info.getData(); in quanto la variabile data non sa che farsene xchè non la usa, cosa sbaglio?

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:Gestione ed aggiornamento database
« Risposta #14 il: 23 Novembre 2011, 11:32:03 CET »
0
Mi rimangio tutto, ci sono riuscito !!!!! :D :D
Grazie grazie mille Zate, sei un grande  :D e grazie anche per la pazienza che hai avuto con un pivello come me

Cmq visto che ci siamo puoi indirizzarmi su un buon metodo per inserire numeri decimali nel database ed anche immagini o indici ad immagini, xchè vorrei costruire una tabella di resoconto dei dati inseriti divisa per data ed in ogni riga mettere immagine della categoria e importo