Autore Topic: banale creazione di una tabella  (Letto 2420 volte)

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
banale creazione di una tabella
« il: 22 Gennaio 2011, 20:58:05 CET »
0
Salve! Non ho molta familiarità con i database, infatti per iniziare ho guardato il tutorial sul database, su questo forum.
Per iniziare a capire ho voluto creare una semplicisssima tabella, formata solo da una colonna. Vorrei che gli elementi inseriti non fossero nulli, e ripetuti. quindi dovrei fare una colonna che sia anche chiave.

Codice (Java): [Seleziona]
private static final String PRODUCTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"  //codice sql di creazione della tabella
+ ProductsMetaData.TABLE_LOG_IN + " ("
+ ProductsMetaData.NAME_KEY + "text primary key);";

è sintatticamente corretto? e se lo è quale potrebbe essere il motivo per il quale, avvio l'applicazione e mi esce un messaggio di termina, senza che nel logcat non ci sia alcun errore?
i dati li ho inseriti come c'è scritto nel tutorial.
Il codice è lo stesso, ho cambiato solo la creazione della tabella.
Grazie a chi saprà rispondermi

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:banale creazione di una tabella
« Risposta #1 il: 23 Gennaio 2011, 08:22:58 CET »
0
Quale messaggio ti esce? Il Force Close?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MrKrabs

  • Utente junior
  • **
  • Post: 94
  • Respect: +4
    • Mostra profilo
Re:banale creazione di una tabella
« Risposta #2 il: 23 Gennaio 2011, 12:55:14 CET »
0
se hai seguito bene il tutorial, prova cosi...potrebbe essere questo.

Codice (Java): [Seleziona]
private static final String PRODUCTS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"  //codice sql di creazione della tabella
+ ProductsMetaData.TABLE_LOG_IN + " ("
+ ProductsMetaData.ID + " integer, "
+ ProductsMetaData.NAME_KEY + "text primary key);";

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #3 il: 23 Gennaio 2011, 16:08:25 CET »
0
si è il force close!
si ho seguito il tutorial! ora provo il tuo suggerimento!

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #4 il: 23 Gennaio 2011, 19:18:46 CET »
0
ho parecchia confuzione in testa. Allora il tuo suggerimento l'ho eseguito, ma non lo potuto testare, perchè io vorrei modificare quel codice del tutorial, ma riesco solo ad aggiungere altre righe sempre rispettando il "prodotto, przzo". se cambio qualcosa non mi funziona, avvolte c'è il force close, avvolte mi si visualizza direttamente senza dirmi niente.
Quindi ho rimosso dal workspace il progetto. L'ho ricaricato, ma non cambiano le cose, perchè, il nome del database essendo lo stesso mi ricarica tutto da capo.
Quindi ho ricaricato il progetto con nome database diverso, ma continua a darmi il force close. e la cosa che mi dà più rabbia è che il logcat non dà errori!!!!!!!!!!!!!!!!!!!!!!!!!!
Quindi non vorrei trarre conclusioni affrettate, ma mi sà che un nuovo database tutto mio, non me lo faccia fare!!!!!! spero di sbagliarmi nello scrivere ciò!!!!!!

Offline MrKrabs

  • Utente junior
  • **
  • Post: 94
  • Respect: +4
    • Mostra profilo
Re:banale creazione di una tabella
« Risposta #5 il: 23 Gennaio 2011, 20:18:23 CET »
0
Citazione
Quindi non vorrei trarre conclusioni affrettate, ma mi sà che un nuovo database tutto mio, non me lo faccia fare!!!!!! spero di sbagliarmi nello scrivere ciò!!!!!!
su questo ti sbagli si sicuro! :-P

E' possibile creare un database tutto personalizzato.

Non vorrei darti una risposta banale, ma alle prime volte può capitare e cioè domando:
Per caso, quando fai una modifica al database sei sicuro di andare a disinstallare l'applicazione dall'emulatore o dal device?
per poi reinstallarla?
Altrimenti non apporti nessuna modifica al database precedentemente installato...

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:banale creazione di una tabella
« Risposta #6 il: 23 Gennaio 2011, 20:24:49 CET »
0
Quindi ho ricaricato il progetto con nome database diverso, ma continua a darmi il force close. e la cosa che mi dà più rabbia è che il logcat non dà errori!!!!!!!!!!!!!!!!!!!!!!!!!!

Force Close senza errori nel LogCat lo trovo improbabile. Più probabile che tu non veda nel punto giusto o che tu abbia disabilitato qualcosa nella visualizzazione. Io comincerei col vedere l'errore nel LogCat. Prova a mettere un po' di Log.i nelle prime righe della OnCreate, se non altro individui il punto di partenza).

Citazione
Quindi non vorrei trarre conclusioni affrettate, ma mi sà che un nuovo database tutto mio, non me lo faccia fare!!!!!! spero di sbagliarmi nello scrivere ciò!!!!!!

 :-)

Non è per scoraggiarti, ma dovresti prendere un po' di confidenza con i database SQL, prima di implementarli in applicazioni android. Dico sul serio, procurarti un SQLite manager da desktop, creati un database e prova ad eseguire le query direttamente su quello (anche quelle di creazione tabelle). In pochi secondi individui gli errori di sintassi SQL e puoi passare a metterle nell'applicazione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #7 il: 23 Gennaio 2011, 22:15:00 CET »
0
Citazione
Non vorrei darti una risposta banale, ma alle prime volte può capitare e cioè domando:
Per caso, quando fai una modifica al database sei sicuro di andare a disinstallare l'applicazione dall'emulatore o dal device?
per poi reinstallarla?
Altrimenti non apporti nessuna modifica al database precedentemente installato...

no tranquillo, niente è banale!  ;-)
comunque mi sà che hai ragione perchè la elimino solo dal workspace.... mi sapresti dare delle dritte su come eliminarlo dall'emulatore?... Grazie in anticipo!

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #8 il: 23 Gennaio 2011, 22:16:50 CET »
0
Non è per scoraggiarti, ma dovresti prendere un po' di confidenza con i database SQL, prima di implementarli in applicazioni android. Dico sul serio, procurarti un SQLite manager da desktop, creati un database e prova ad eseguire le query direttamente su quello (anche quelle di creazione tabelle). In pochi secondi individui gli errori di sintassi SQL e puoi passare a metterle nell'applicazione.
ok accetto il consiglio! procedo!  :-)

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #9 il: 24 Gennaio 2011, 20:36:08 CET »
0
Fatto!!!! che bello!!!! ecco la mia prima tabella!!!  :D
Peccato che c'è un piccolo problema. Allora, devo fare un login, usando solo nome utente, senza password. Quindi ho creato una sola colonna di tipo testo primary key.
Tale nome utente deve essere non nullo, e non ripetuto, quindi unico.
La primary key su una sola colonna dovrebbe in automatico determinare l'unicità dell'elemento nella tabella.
Quindi se io inserisco 2 volte uno stesso nome, mi deve dare eccezzione.
L'eccezione c'è, come vedrete nel logcat. (Anche se io mi aspettavo un force close)
Voglio informare l'utente, che ha inserito un nome già esistente. Quindi dovrei catturare l'eccezione e stampare un messaggio di login errato. Bene, questo messaggio non appare XD
Vi posto tutto...
Codice (Java): [Seleziona]
package com.login;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteConstraintException;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView nome_esistente=(TextView)findViewById(R.id.TextView03);
        ListView lista_nomi = (ListView)findViewById(R.id.ListView01);
        TextView nome = (TextView)findViewById(R.id.TextView01);
        //inserisco e visualizzo dati
        MyDatabase database=new MyDatabase(getApplicationContext());
        database.open();
        try{
        database.insertName("vasco");
        database.insertName("vasco");
        database.insertName("vasco");
        }catch (android.database.sqlite.SQLiteConstraintException e) {
                nome_esistente.setText("nome già inserito");
                        // TODO: handle exception
                }
        //stampo
        Cursor c = database.fetchnomi();
        startManagingCursor(c);
        // E' un adapter che tramite un cursor mi mostra il contenuto della tabella
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
             this, R.layout.main, c,
             new String[]{MyDatabase.LoginMetaData.ID},
             new int[]{R.id.TextView02});
        // Associo alla list view questo adapter
      lista_nomi.setAdapter(adapter);
      // Reperiamo i dati e li stampiamo in una text view    
      int nome_int=c.getColumnIndex(MyDatabase.LoginMetaData.ID);
      // Ci muoviamo all'interno della tabella con il cursor
      if(c.moveToFirst()) {
         do {
                // Estraiamo i dati da stampare nella list view
                nome.append(c.getString(nome_int)+"\n");
               
         }while(c.moveToNext());
      } // Chiudo il cursore
      if (c != null && !c.isClosed())
      {
              c.close();  
      }        
      // Chiudiamo il database                      
      database.close();  
  }    
    }

Codice (Java): [Seleziona]
package com.login;

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="login";//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
       
        public void insertName(String nome){ //metodo per inserire i dati
                ContentValues cv=new ContentValues();
                cv.put(LoginMetaData.ID, nome);
       
                mDb.insert(LoginMetaData.LOGIN_TABLE, null, cv);
        }
       
        public Cursor fetchnomi(){ //metodo per fare la query di tutti i dati
                return mDb.query(LoginMetaData.LOGIN_TABLE, null,null,null,null,null,null);            
        }

        static class LoginMetaData {  // i metadati della tabella, accessibili ovunque
                static final String LOGIN_TABLE = "login";
                static final String ID = "_id";
       
        }

        private static final String LOGIN_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
                        + LoginMetaData.LOGIN_TABLE + " ( "
                        + LoginMetaData.ID+ " text not null primary key); ";
                       
        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(LOGIN_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

                }

        }
               

}

Codice (Java): [Seleziona]
01-24 21:17:07.254: ERROR/Database(920): Error inserting _id=vasco
01-24 21:17:07.254: ERROR/Database(920): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
01-24 21:17:07.254: ERROR/Database(920):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
01-24 21:17:07.254: ERROR/Database(920):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
01-24 21:17:07.254: ERROR/Database(920):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
01-24 21:17:07.254: ERROR/Database(920):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
01-24 21:17:07.254: ERROR/Database(920):     at com.login.MyDatabase.insertName(MyDatabase.java:39)
01-24 21:17:07.254: ERROR/Database(920):     at com.login.main.onCreate(main.java:26)
01-24 21:17:07.254: ERROR/Database(920):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-24 21:17:07.254: ERROR/Database(920):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-24 21:17:07.254: ERROR/Database(920):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-24 21:17:07.254: ERROR/Database(920):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-24 21:17:07.254: ERROR/Database(920):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-24 21:17:07.254: ERROR/Database(920):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 21:17:07.254: ERROR/Database(920):     at android.os.Looper.loop(Looper.java:123)
01-24 21:17:07.254: ERROR/Database(920):     at android.app.ActivityThread.main(ActivityThread.java:4627)
01-24 21:17:07.254: ERROR/Database(920):     at java.lang.reflect.Method.invokeNative(Native Method)
01-24 21:17:07.254: ERROR/Database(920):     at java.lang.reflect.Method.invoke(Method.java:521)
01-24 21:17:07.254: ERROR/Database(920):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-24 21:17:07.254: ERROR/Database(920):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-24 21:17:07.254: ERROR/Database(920):     at dalvik.system.NativeStart.main(Native Method)
01-24 21:17:07.964: WARN/IInputConnectionWrapper(129): showStatusIcon on inactive InputConnection
01-24 21:17:08.094: INFO/ActivityManager(66): Displayed activity com.login/.main: 3186 ms (total 3186 ms)
01-24 21:17:13.404: DEBUG/dalvikvm(289): GC_EXPLICIT freed 848 objects / 53320 bytes in 204ms
01-24 21:17:18.434: DEBUG/dalvikvm(185): GC_EXPLICIT freed 90 objects / 3664 bytes in 219ms
01-24 21:17:23.625: DEBUG/dalvikvm(262): GC_EXPLICIT freed 64 objects / 2880 bytes in 124ms
01-24 21:17:28.555: DEBUG/dalvikvm(129): GC_EXPLICIT freed 7618 objects / 406944 bytes in 244ms

Adesso, la riga 19 non ho capito di dov'è! Se del main.java o del Mydatabase.java! magari è scritto nel logcat ma io non riesco ad individuarlo!

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:banale creazione di una tabella
« Risposta #10 il: 25 Gennaio 2011, 02:58:00 CET »
0
hai provato a mettere dei System.out dentro al catch dopo le insert? si vedono?
poi la tua funzione insert deve avere throw SQLiteConstraintException
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #11 il: 25 Gennaio 2011, 17:07:53 CET »
0
il system.out.printl dovrei vederli nel logcat??? in ogni modo sembra che nei blocchi catch non entri...
Codice (Java): [Seleziona]
 
try{
        database.insertName("vasco");
        database.insertName("vasco");
        database.insertName("vasco");
        }catch (SQLiteConstraintException e) {
                // TODO: handle exception
                nome_esistente.setText("nome già inserito");
                System.out.println("nome già inserito"); //ho aggiunto la output
                       
                }

il secondo isert corrisponde al rigo 25 segnalato dal logcat: 01-25 17:50:09.462: ERROR/Database(863):     at com.login.main.onCreate(main.java:25)

mentre nel Mydatabase.java:
Codice (Java): [Seleziona]
public void insertName(String nome) throws SQLiteConstraintException{ //aggiunto throws
                //metodo per inserire i dati
                ContentValues cv=new ContentValues();
                cv.put(LoginMetaData.ID, nome);
try{
                mDb.insert(LoginMetaData.LOGIN_TABLE, null, cv);
        }catch (SQLiteConstraintException e) {
                // TODO: handle exception
                System.out.println("nome già inserito");
                throw new SQLiteConstraintException(); //questo rigo è stata solo una prova
        }

mDb.insert....corrisponde al rigo 43 segnalato dal logcat:01-25 17:50:09.462: ERROR/Database(863):     at com.login.MyDatabase.insertName(MyDatabase.java:43)

ecco il logcat per intero, ovviamente ripetuto 2 volte, perchè 2 volte tento di inserito erroneamente "vasco"
Codice (Java): [Seleziona]
01-25 17:50:09.462: ERROR/Database(863): Error inserting _id=vasco
01-25 17:50:09.462: ERROR/Database(863): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
01-25 17:50:09.462: ERROR/Database(863):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
01-25 17:50:09.462: ERROR/Database(863):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
01-25 17:50:09.462: ERROR/Database(863):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
01-25 17:50:09.462: ERROR/Database(863):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
01-25 17:50:09.462: ERROR/Database(863):     at com.login.MyDatabase.insertName(MyDatabase.java:43)
01-25 17:50:09.462: ERROR/Database(863):     at com.login.main.onCreate(main.java:25)
01-25 17:50:09.462: ERROR/Database(863):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-25 17:50:09.462: ERROR/Database(863):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-25 17:50:09.462: ERROR/Database(863):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-25 17:50:09.462: ERROR/Database(863):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-25 17:50:09.462: ERROR/Database(863):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-25 17:50:09.462: ERROR/Database(863):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-25 17:50:09.462: ERROR/Database(863):     at android.os.Looper.loop(Looper.java:123)
01-25 17:50:09.462: ERROR/Database(863):     at android.app.ActivityThread.main(ActivityThread.java:4627)
01-25 17:50:09.462: ERROR/Database(863):     at java.lang.reflect.Method.invokeNative(Native Method)
01-25 17:50:09.462: ERROR/Database(863):     at java.lang.reflect.Method.invoke(Method.java:521)
01-25 17:50:09.462: ERROR/Database(863):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-25 17:50:09.462: ERROR/Database(863):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-25 17:50:09.462: ERROR/Database(863):     at dalvik.system.NativeStart.main(Native Method)

uffy perchè l'eccezione non viene eseguita?  :-(
« Ultima modifica: 25 Gennaio 2011, 17:11:26 CET da softmystery »

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:banale creazione di una tabella
« Risposta #12 il: 25 Gennaio 2011, 17:56:09 CET »
+1
ecco il perchè:
SQLiteDatabase | Android Developers
insert prova a fare l'insert e basta
insertOrThrow invece prova a fare l'insert,se non riesce lancia l'eccezione. prova con questo metodo
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:banale creazione di una tabella
« Risposta #13 il: 25 Gennaio 2011, 18:31:55 CET »
0
Fantastico! grazie mille!  ;-)