Autore Topic: Select SQLite - Errore nel cursor  (Letto 931 volte)

Offline bortol88

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Archlinux - kernel26-ck
Select SQLite - Errore nel cursor
« il: 21 Febbraio 2011, 23:18:09 CET »
0
Ciao a tutti ragazzi.
Sto imparando da non molto la programmazione in Android. Mi serve per la tesi :)
Stavo vedendo come gestire il DB in android ma mi sono imbattuto per diverse ore in questo problema ... o.O
So che magari per voi è una cavolata... ma grazie del vostro aiuto :)

Allora... stavo facendo un DB di prova. Ho esportato il mio geofire.db e ho visto che il db si è creato, la tabella pure, e riesco ad inserire gli elementi.
Il problema è che non riesco a leggerli.... Mi da: Bad request for field slot 0,1. numRows = 1, numColumns = 1 o altre eccezioni legate agli indici del cursore.
L'eccezione si solleva nella riga:
Codice (Java): [Seleziona]
String s = cursor.getString(cursor.getColumnIndex("id"));Ho provato anche a far scorrere il cursore, a farlo partire dall'inizio manualmente, ma niente....
Forse non ho capito qualcosa io dei cursori... boh... Io sono abituato ad usare Hibernate in java nelle webapplication :D
Codice (Java): [Seleziona]
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                Log.i(LOG_TAG, "onCreate");
                super.onCreate(savedInstanceState);
                setContentView(R.layout.status);
               
                //apriamo il database creato
                GeoFireDatabase dbGeo = new GeoFireDatabase (this);
                SQLiteDatabase db = dbGeo.getWritableDatabase();
               
                //Aggiunta di una riga funzionante
                /*ContentValues cv = new ContentValues ();
                cv.put("responsabile", "ciccio");
                db.insert("squadra", null, cv);
                */

               
                SQLiteQueryBuilder builder = new SQLiteQueryBuilder ();
                builder.setTables("squadra");
                Cursor cursor = builder.query(db, new String [] {"responsabile"}, null, null, null, null, null);
                       
                String s = cursor.getString(cursor.getColumnIndex("id"));
               
                cursor.close();
                db.close();
               

        }

Ora vi posto il mio GeoFireDatabase che estende SQLiteOpenHelper:
Codice (Java): [Seleziona]
public class GeoFireDatabase extends SQLiteOpenHelper{
       
        private static final String DATABASE_NAME = "geofireapp.db";
        private static final int DATABASE_VERSION = 1;
       
        private static final String ID = "\"id\"";
        private static final String RESPONSABILE = "\"responsabile\"";
       
        public GeoFireDatabase (Context ctx){
                super(ctx,DATABASE_NAME, null, DATABASE_VERSION);
        }
       
        @Override
        public void onCreate (SQLiteDatabase db){
                db.execSQL("CREATE TABLE squadra " + "(" +
                                     ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                     RESPONSABILE + " TEXT NOT NULL" + ");"
                );
               
        }
       
        @Override
        public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion){
                db.execSQL("DROP TABLE IF EXISTS squadra");
        }

}

Grazie fin da ora a chi mi darà una mano ;)
Daniele

« Ultima modifica: 22 Febbraio 2011, 14:49:30 CET da bortol88 »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Select SQLite - Errore nel cursor
« Risposta #1 il: 22 Febbraio 2011, 08:39:14 CET »
0
ma l'id non dovrebbe essere _id?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline bortol88

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Archlinux - kernel26-ck
Re:Select SQLite - Errore nel cursor
« Risposta #2 il: 22 Febbraio 2011, 10:56:44 CET »
0
E' sempre _id? Pensavo fosse necessario solamente quando si usano gli adapter.. Ma mi posso ovviamente sbagliare...
Proverò!
E Grazie della risposta!
« Ultima modifica: 22 Febbraio 2011, 11:27:30 CET da bortol88 »

Offline bortol88

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Archlinux - kernel26-ck
Re:Select SQLite - Errore nel cursor
« Risposta #3 il: 22 Febbraio 2011, 14:48:39 CET »
0
Funziona!!
Mi potete spiegare perchè questa limitazione?
La primary key deve essere inoltre sempre un numero?
Grazie cmq!! ieri ci avevo perso un botto di tempo...