Autore Topic: Sqlite e sintassi per select con prepared statement  (Letto 927 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Sqlite e sintassi per select con prepared statement
« il: 15 Ottobre 2010, 12:14:34 CEST »
0
ciao
sto provando ad usare le prepared statement con android
in rete ho trovato il codice per eseguire una select count(*), vi riporto il mio codice funzionante:

Codice (Java): [Seleziona]
public boolean isPecoraEsistente(int id) {
                boolean isPecoraEsistente = false;
               
                String query = "select count(*) from pecora where id_pecora = ?";
               
                SQLiteStatement stmt = myDataBase.compileStatement(query);

                stmt.bindLong(1, id);
                long result = stmt.simpleQueryForLong();
                if (result > 0)
                        isPecoraEsistente = true;

                Log.i(this.toString(), "isPecoraEsistente: " + isPecoraEsistente);
                return isPecoraEsistente;
        }
   

Non sono riuscito a trovare il codice per poter fare una select standard, questo è il codice incompleto:

Codice (Java): [Seleziona]
public Pecora getPecora(int id) {
                Pecora pecora = null;
               
                String query = "select id, nome, colore from pecora where id_pecora = ?";
               
                SQLiteStatement stmt = myDataBase.compileStatement(query);

                stmt.bindLong(1, id);
               
                ??? come recupero i dati ???

                Log.i(this.toString(), "nome pecora: " + pecora.getNome());
                return pecora;
        }

sapreste darmi un esempio?

grazie

Offline genny84

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4
  • Sistema operativo:
    Android KitKat
Re:Sqlite e sintassi per select con prepared statement
« Risposta #1 il: 21 Febbraio 2014, 17:37:13 CET »
0
Ciao,
vediamo se posso aiutarti io (ci sto lavorando da poco con android però a me ha funzionato):

Codice (Java): [Seleziona]
//dichiaro il mio oggetto per collegarmi al DB
SQLiteDatabase db = this.getReadableDatabase();
//creo lo statement SQL da lanciare
String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS +
" WHERE " + KEY_NAME + "= '"+nome+"'" +" AND " + KEY_SURNAME+ "= '"+ cognome+"'";
//creo l'oggetto contenitore per il risultato
Cursor cursor = db.rawQuery(selectQuery, null);
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setSurname(cursor.getString(2));
contact.setIndirizzo(cursor.getString(3));
contact.setMail(cursor.getString(4));
contact.setPhoneNumber(cursor.getString(5));

Ovviamente questo funziona solo nel caso tu sia assolutamente sicuro di estrarre un solo record, altrimenti dovrai poi fetchare sul cursore per scorrere tutti i record così:
Codice (Java): [Seleziona]
                if (cursor.moveToFirst()) {
                        do {
                                Contact[] contact = new Contact();
                                contact.setID(Integer.parseInt(cursor.getString(0)));
                                 contact.setName(cursor.getString(1));
                                 contact.setSurname(cursor.getString(2));
                                contact.setIndirizzo(cursor.getString(3));
                                contact.setMail(cursor.getString(4));
                                contact.setPhoneNumber(cursor.getString(5));
                                 // Aggiungi contatto alla lista
                                 .........
                        } while (cursor.moveToNext());
                }
Spero di esserti stato utile  :-)