Autore Topic: [medio] Creazione e utilizzo di un database SQLite  (Letto 69124 volte)

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
[medio] Creazione e utilizzo di un database SQLite
« il: 07 Settembre 2010, 23:25:00 CEST »
+24
Livello di difficoltà: medio
Versione SDK utilizzata: 1.5
Link al file compresso del progetto eclipse: file in allegato

Salve a tutti !

Di seguito, un breve tutorial su come creare ed utilizzare un database SQLite.
Creiamo una classe che gestisce tutte operazioni sul database, per mantenere le cose un po' più pulite. Poi useremo questa classe nella nostra activity.

Ho inserito in questo tutoral anche l'uso di un SimpleCursorAdapter, animazioni, gradienti(sia da java che xml) e fonts personalizzati.
Ho preferito commentare il codice, anzichè dilungarmi in spiegazioni a parte.


La classe che gestisce il database di un ipotetico prodotto:
Codice (Java): [Seleziona]
public class MyDatabase {  

        SQLiteDatabase mDb;
        DbHelper mDbHelper;
        Context mContext;
        private static final String DB_NAME="tutorialdb";//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 open(){  //il database su cui agiamo è leggibile/scrivibile
                mDb=mDbHelper.getWritableDatabase();
               
        }
       
        public void close(){ //chiudiamo il database su cui agiamo
                mDb.close();
        }
       
       
        //i seguenti 2 metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione
       // consiglio:si potrebbe creare una classe Prodotto, i quali oggetti verrebbero passati come parametri dei seguenti metodi, rispettivamente ritornati. Lacio a voi il divertimento

       
        public void insertProduct(String name,int price){ //metodo per inserire i dati
                ContentValues cv=new ContentValues();
                cv.put(ProductsMetaData.PRODUCT_NAME_KEY, name);
                cv.put(ProductsMetaData.PRODUCT_PRICE_KEY, price);
                mDb.insert(ProductsMetaData.PRODUCTS_TABLE, null, cv);
        }
       
        public Cursor fetchProducts(){ //metodo per fare la query di tutti i dati
                return mDb.query(ProductsMetaData.PRODUCTS_TABLE, null,null,null,null,null,null);              
        }

        static class ProductsMetaData {  // i metadati della tabella, accessibili ovunque
                static final String PRODUCTS_TABLE = "products";
                static final String ID = "_id";
                static final String PRODUCT_NAME_KEY = "name";
                static final String PRODUCT_PRICE_KEY = "price";
        }

        private static final String PRODUCTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
                        + ProductsMetaData.PRODUCTS_TABLE + " ("
                        + ProductsMetaData.ID+ " integer primary key autoincrement, "
                        + ProductsMetaData.PRODUCT_NAME_KEY + " text not null, "
                        + ProductsMetaData.PRODUCT_PRICE_KEY + " integer 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(PRODUCTS_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

                }

        }
               

}


Usiamo il db nell'activity
Codice (Java): [Seleziona]
public class Demo extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);                
       
        TextView productsTv=(TextView)findViewById(R.id.productsTv);
        productsTv.setTypeface(Typeface.createFromAsset(getAssets(),"kberry.ttf"));  
        //caricamento di un font esterno, piazzato nella cartella assets
       
        ListView productsLv=(ListView)findViewById(R.id.productsLv);
       
        MyDatabase db=new MyDatabase(getApplicationContext());
        db.open();  //apriamo il db
       
       
        if(db.fetchProducts().getCount()==0){//inserimento dati, solo se il db è vuoto
       
                db.insertProduct("Telefono", 400);
                db.insertProduct("Scarpe", 100);
                db.insertProduct("PC", 500);
                db.insertProduct("Pane", 2);
                db.insertProduct("Patente guida", 100); //lol
       
        }
       
       

        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.PRODUCT_NAME_KEY,MyDatabase.ProductsMetaData.PRODUCT_PRICE_KEY},//questi colonne
                        new int[]{R.id.nameTv,R.id.priceTv});//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.PRODUCT_NAME_KEY);  //indici delle colonne
        int priceCol=c.getColumnIndex(MyDatabase.ProductsMetaData.PRODUCT_PRICE_KEY);      
       
        if(c.moveToFirst()){  //se va alla prima entry, il cursore non è vuoto
                do {
                               
                        productsTv.append("Product Name:"+c.getString(nameCol)+", Price:"+c.getInt(priceCol)+"\n"); //estrazione dei dati dalla entry del cursor
                                       
                        } while (c.moveToNext());//iteriamo al prossimo elemento
        }
       
        db.close();
       
       
       

        getWindow().setFormat(PixelFormat.RGBA_8888);   //visto che usiamo i gradient, usiamo questo trick (vedi snippet forum)
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);  
       
        productsLv.setBackgroundDrawable(new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[]{Color.RED,Color.parseColor("#f2bf26")}));
        productsTv.setBackgroundDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.RED,Color.parseColor("#f2bf26")}));
        //definizione ed uso di gradient in modo programmatico
       
       
        //animazioni in modo programmatico (vedi snippet forum)
        Animation a1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f);
        a1.setDuration(1000);
        a1.setInterpolator(AnimationUtils.loadInterpolator(this, android.R.anim.decelerate_interpolator));
        productsLv.startAnimation(a1);
        //entra da sotto
       
       
        Animation a2 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);
        a2.setDuration(1000);
        a2.setInterpolator(AnimationUtils.loadInterpolator(this, android.R.anim.decelerate_interpolator));
        productsTv.startAnimation(a2);
        //entra da sopra
       
       
    }
}


Il layout con una textview e una listview (main.xml)
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/productsTv"
                android:textColor="#000000"
                android:textSize="25dp"
                android:textStyle="bold" />

        <ListView
                android:id="@+id/productsLv"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:cacheColorHint="#00000000"
                android:dividerHeight="2dp"
                android:divider="@drawable/divider"
               
        ></ListView>
</LinearLayout>

Il layout di ogni elemento della listview
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:weightSum="10"
        >

        <TextView              
                android:id="@+id/nameTv"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="8"
                android:textSize="15dp"
                android:textStyle="bold"
                android:textColor="#000000">
        </TextView>
        <TextView              
                android:id="@+id/priceTv"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="15dp"
                android:textStyle="bold"
                android:textColor="#000000">
        </TextView>
</LinearLayout>


L'xml che rappresenta un gradiente, lo usiamo come divisore tra gli elementi della listview
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
  <gradient
     android:startColor="#FFFF0000"
     android:centerColor="#FF000000"
     android:endColor="#FFFF0000"
     android:angle="0" />
</shape>



La scelta dei colori e del font è discutibile   :D :D


Come noto, Sqlite lavora con un file unico in cui vengono salvate tabelle, indici, views,ecc.
Questo file viene posizionato sul vostro dispositivo in /data/data/il.vostro.package/databases/.
Il nome del file corrisponde, nel caso di questo tutorial, alla stringa DB_NAME.

Spero che questo tutorial vi possa essere utile.

Saluti.
Qlimax

« Ultima modifica: 06 Dicembre 2011, 16:43:58 CET da Qlimax »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #1 il: 07 Settembre 2010, 23:33:23 CEST »
0
Ci voleva un bel tutorial sui DB :).
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #2 il: 07 Settembre 2010, 23:49:52 CEST »
0
Bravo Qlimax :)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #3 il: 08 Settembre 2010, 10:06:52 CEST »
0
Complimenti, ci voleva proprio!
Postate il LogCat LogCat LogCat LogCat LogCat

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #4 il: 29 Settembre 2010, 15:09:11 CEST »
0
Salve non riesco a implementare il mio  db..non ho errori sul codice ma quando vado ad eseguire l'applicazione non parte, crasha fin dall'inizio con il messaggio "interruzione imprevista dell'applicazione"..
Codice (Java): [Seleziona]
package com.android;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SimpleCursorAdapter;

public class season extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
       
        final EditText insNome= (EditText) findViewById(R.id.insNome);
       
        MyDatabase db=new MyDatabase(getApplicationContext());
        db.open();
       
        if(db.fetchProducts().getCount()==0){//inserimento dati, solo se il db è vuoto
           
            db.insertProfile(insNome.getText().toString(), "400");
       
            Cursor c=db.fetchProducts(); // query
            startManagingCursor(c);
           
            db.close();
        }
    }}
                       
       
   
Questo è il codice dell'app..
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #5 il: 29 Settembre 2010, 15:27:07 CEST »
0
Dovresti postare l'errore che ti viene ritornato tramite logcat :)

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #6 il: 29 Settembre 2010, 15:45:57 CEST »
+2
posta anche il codice della classe MyDatabase pf...

ad ogni modo:

- chiudi il db fuori dall' if (dopo)

- le seguenti 2 righe al momento sembrano inutili:
Codice (Java): [Seleziona]
Cursor c=db.fetchProducts(); // query
startManagingCursor(c);

-al momento, a meno che tu abbia preimpostato un testo nella edittext, viene inserito un testo vuoto nel db:  onCreate " viene lanciata quando parte l'applicazione " e  dunque in quel momento la edittext è vuota
quindi:
il pezzo di codice che usi per inserire dati nel db, sarebbe opportuno spostarlo in un listener di un bottone.


Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #7 il: 29 Settembre 2010, 21:26:00 CEST »
0
Ecco la classe myDatabase
Codice (Java): [Seleziona]
package com.android;

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 mDb;
    DbHelper mDbHelper;
    Context mContext;
    private static final String DB_NAME="seasonDb";//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 open(){  //il database su cui agiamo è leggibile/scrivibile
            mDb=mDbHelper.getWritableDatabase();
           
    }
   
    public void close(){ //chiudiamo il database su cui agiamo
            mDb.close();
    }
   
   
    //i seguenti 2 metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione
   // consiglio:si potrebbe creare una classe Prodotto, i quali oggetti verrebbero passati come parametri dei seguenti metodi, rispettivamente ritornati. Lacio a voi il divertimento

   
    public void insertProfile(String name,String team){ //metodo per inserire i dati
            ContentValues cv=new ContentValues();
            cv.put(ProfileMetaData.PRODUCT_NAME_KEY, name);
            cv.put(ProfileMetaData.PRODUCT_TEAM_KEY, team);
            mDb.insert(ProfileMetaData.PRODUCTS_TABLE, null, cv);
    }
   
    public Cursor fetchProducts(){ //metodo per fare la query di tutti i dati
            return mDb.query(ProfileMetaData.PRODUCTS_TABLE, null,null,null,null,null,null);              
    }

    static class ProfileMetaData {  // i metadati della tabella, accessibili ovunque
            static final String PRODUCTS_TABLE = "products";
            static final String ID = "_id";
            static final String PRODUCT_NAME_KEY = "name";
            static final String PRODUCT_TEAM_KEY = "team";
    }

    private static final String PRODUCTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
                    + ProfileMetaData.PRODUCTS_TABLE + " ("
                    + ProfileMetaData.ID+ " integer primary key autoincrement, "
                    + ProfileMetaData.PRODUCT_NAME_KEY + " text not null, "
                    + ProfileMetaData.PRODUCT_TEAM_KEY + " integer 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(PRODUCTS_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

            }

    }
           

}
Il punto è che vorrei semplicemente inserire degli editText con i quali l'utente va a compilare una tabella sql, ma non riesco proprio.
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #8 il: 29 Settembre 2010, 22:37:09 CEST »
+1
probabilmente il problema sta qui:

Codice (Java): [Seleziona]
private static final String PRODUCTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
                    + ProfileMetaData.PRODUCTS_TABLE + " ("
                    + ProfileMetaData.ID+ " integer primary key autoincrement, "
                    + ProfileMetaData.PRODUCT_NAME_KEY + " text not null, "
                    + ProfileMetaData.PRODUCT_TEAM_KEY + " integer not null);"


ProfileMetaData.PRODUCT_TEAM_KEY, è un campo integer nel database.

Mentre qui:

 
Codice (Java): [Seleziona]
  public void insertProfile(String name,String team){ //metodo per inserire i dati
            ContentValues cv=new ContentValues();
            cv.put(ProfileMetaData.PRODUCT_NAME_KEY, name);
            cv.put(ProfileMetaData.PRODUCT_TEAM_KEY, team);
            mDb.insert(ProfileMetaData.PRODUCTS_TABLE, null, cv);
    }


gli inserisci, nel campo ProfileMetaData.PRODUCT_TEAM_KEY, una stringa. E questo probabilmente non gli piace.


Quindi, dovresti cambiare integer not null con text not null.


Prima di rieseguire il codice, apporta anche le modifiche che ti ho consigliato nel post precedente, ma soprattutto disinstalla e reinstalla l'applicazione (cancelli il db). Se no la tabella rimane invariata.

Nota:

per cancellare il db, senza reinstallare l'applicazione, apri una console e scrivi

Codice: [Seleziona]
adb shell
rm /data/data/il.tuo.package/databases/*
exit

invece per disinstallare al volo la tua applicazione:

Codice: [Seleziona]
adb uninstall il.tuo.package




Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #9 il: 30 Settembre 2010, 09:29:49 CEST »
0
Per cancellare i db non basta andare in gestione applicazioni > propria app > cancella dati?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #10 il: 30 Settembre 2010, 15:52:21 CEST »
0
Scusate ragazzi era uno stupido errore nel file xml..comunque il codice attuale è questo:
Codice (Java): [Seleziona]
package com.android;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SimpleCursorAdapter;

public class season extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
       
        final EditText insNome= (EditText) findViewById(R.id.insNome);
        final EditText insTeam= (EditText) findViewById(R.id.insTeam);
       
        Button art1=(Button) findViewById(R.id.art1);
       
       
        art1.setOnClickListener(new View.OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub                             
                               
                                MyDatabase db=new MyDatabase(getApplicationContext());
                        db.open();
                               
                                if(db.fetchProducts().getCount()==0){//inserimento dati, solo se il db è vuoto
                                   
                                    db.insertProfile(insNome.getText().toString(), insTeam.getText().toString());      
                                   
                                   
                                       
                                          db.close();    
                                }
                        }       }
               
        );
       
    }}      
           
       
       
   
                       
       
   

Con questo codice dovrei riuscire a compilare una tabella con nome e squadra giusto?
Come faccio a visualizzarla?
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #11 il: 30 Settembre 2010, 17:10:09 CEST »
+1
se hai un problema particolare, devi iniziare una discussione separata separata in quanto questo è un tutorial...
per rispondere brevemente alla tue domande:
1. in linea di massima si... io toglierei tutto l'if (leggi il commento della riga) 
2. c'è tutto nel tutorial

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #12 il: 08 Ottobre 2010, 02:26:27 CEST »
0
Sto seguendo questo ottimo tutorial
Io però ho due tabelle collegate tra loro
Supponiamo che ho la tabella prodotti e la tabella fornitori
Supponiamo che inseirisco un fornitore poi vorrei ottenere l'id (primary key) del fornitore appena inserito e metterla nella riga che sto inserendo nella tabella prodotti. Come faccio questa operazione?

grazie

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #13 il: 08 Ottobre 2010, 15:02:21 CEST »
0
Se volessi visualizzare semplicemente la mia unica tabella che ho nel db compresi i dati, in una textview, come potrei fare? ho seguito il tutorial ma non riesco lo stesso..help
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #14 il: 08 Ottobre 2010, 15:49:51 CEST »
+1
Se volessi visualizzare semplicemente la mia unica tabella che ho nel db compresi i dati, in una textview, come potrei fare? ho seguito il tutorial ma non riesco lo stesso..help

mah... guarda, nel tutorial faccio proprio quello che vuoi fare tu:
Codice (Java): [Seleziona]
        int nameCol=c.getColumnIndex(MyDatabase.ProductsMetaData.PRODUCT_NAME_KEY);  //indici delle colonne
        int priceCol=c.getColumnIndex(MyDatabase.ProductsMetaData.PRODUCT_PRICE_KEY);      
       
        if(c.moveToFirst()){  //se va alla prima entry, il cursore non è vuoto
                do {
                               
                        productsTv.append("Product Name:"+c.getString(nameCol)+", Price:"+c.getInt(priceCol)+"\n"); //estrazione dei dati dalla entry del cursor
                                       
                        } while (c.moveToNext());//iteriamo al prossimo elemento
        }
       
        db.close();
« Ultima modifica: 08 Ottobre 2010, 15:56:46 CEST da Qlimax »