Autore Topic: problemi con rawQuery()  (Letto 1128 volte)

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
problemi con rawQuery()
« il: 21 Novembre 2012, 10:10:55 CET »
0
Salve a tutti,
Non capisco perchè ho un errore di questo tipo android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x29d1f0 ho provato a cercare sul web ma nada....vi posto il codice ;)
Codice (Java(TM) 2 Platform Standard Edition 5.0): [Seleziona]
String[] confronto = new String[mRecived.getCount()];

int i = 0;
while(!c1.isAfterLast()){
       confronto[i] = c1.getString(c1.getColumnIndex(Contains.NAME));
        i++;
        c1.moveToNext();
}
c1.close();

Cursor cView = db1.rawQuery("SELECT descrizione_item, barcode_item, id_item_web FROM ProductsGen WHERE descrizione_item = ?", confronto);

Grazie in anticipo :P

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:problemi con rawQuery()
« Risposta #1 il: 21 Novembre 2012, 10:12:19 CET »
0
MI sono dimenticato di scrivere dove ho il problema....è alla riga:
Codice (Java(TM) 2 Platform Standard Edition 5.0): [Seleziona]
Cursor cView = db1.rawQuery("SELECT descrizione_item, barcode_item, id_item_web FROM ProductsGen WHERE descrizione_item = ?", confronto);

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:problemi con rawQuery()
« Risposta #2 il: 21 Novembre 2012, 11:13:52 CET »
0
confronto è un array, non puoi fare = array, devi fare una IN
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 boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:problemi con rawQuery()
« Risposta #3 il: 21 Novembre 2012, 11:29:28 CET »
0
Tipo così:
Codice (Java(TM) 2 Platform Standard Edition 5.0): [Seleziona]
Cursor cView = db1.rawQuery("SELECT descrizione_item, barcode_item, id_item_web FROM ProductsGen WHERE descrizione_item = ?", new String[] {"Pippo"});  ?????

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:problemi con rawQuery()
« Risposta #4 il: 21 Novembre 2012, 12:22:58 CET »
+1
No, così:
Codice (Java): [Seleziona]
Cursor cView db1.rawQuery("SELECT descrizione_item, barcode_item, id_item_web FROM ProductsGen WHERE descrizione_item IN ("+ makePlaceholder(confronto.length) +")", confronto);
Dove makePlaceholder è una funzioncina di servizio del tipo:
Codice (Java): [Seleziona]
/**
 * Costruisci una stringa di tanti '?' quanto la dimensione indicata.
 * Con size pari a 3 costruisce una stringa "?,?,?".
 * Da usare per definire query con clausula IN
 */

public static String makePlaceholder(int size) {
  StringBuffer sb = new StringBuffer();
  for(int i=1; i<=size;i++) {
    sb.append("?");
    if(i!=size) sb.append(",");
  }
  return sb.toString();
}

(salvo errori o omissioni dovuti alla fretta)

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:problemi con rawQuery()
« Risposta #5 il: 21 Novembre 2012, 13:05:29 CET »
0
Grazie mille Sakazaki,
Ti spiego bene quello che devo fare:
Ho tre tabelle (A,B,C), A scrive su C e anche B deve scrivere su C,  ma quando B scrive su C deve tener conto che  se B ha come nome "pippo" e "pippo" e già presente dentro la tabella C, non deve scrivere.
Conosci per caso un metodo più semplice??? Scusa se ti rompo :)

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:problemi con rawQuery()
« Risposta #6 il: 21 Novembre 2012, 13:40:00 CET »
0
Conosci per caso un metodo più semplice???
E chi lo sa...
Perdonami ma non c'ho capito una mazza!  :-P

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:problemi con rawQuery()
« Risposta #7 il: 21 Novembre 2012, 14:22:28 CET »
0
ashashahsashh okk tranquillo :) non ti preoccupare :)  grazie di tutto ;)