sto cercando di selezionare alcuni dati dal database e ho due fette di codice per farlo:selectionArgs in SQLiteQueryBuilder non funziona con valori interi nelle colonne
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = ?", new String[]{getSID(db)}, null, null, null);
e
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = " + getSID(db), null, null, null, null);
La differenza tra di loro è che il primo sembra essere più corretto secondo la documentazione, ma non funziona - il cursore è vuoto. Invece del secondo - ricevo tutti i dati di cui ho bisogno.
Così ho cercato di eseguire diverse query SQL sul mio PC con una copia del database e questo è quello che ho:
SELECT col1, col2, col3 FROM SomeTables WHERE (id = '42')
Questo uno non funziona (e questa query è uguale, ovviamente, per interrogare, generato dal primo codice di esempio)
SELECT col1, col2, col3 FROM SomeTables WHERE (id = 42)
E questo funziona correttamente (equivale alla query dal secondo esempio di codice).
Come noto, SQLite dovrebbe eseguire automaticamente il cast di tipi, ma qualcosa è andato storto e non so perché. Hai qualche idea su come può essere corretto il primo codice di esempio? (? O, forse, database)
Se è importante, qui è semplificato CREATE
sceneggiatura del tavolo con id
campo:
CREATE TABLE SomeTable (ID PRIMARY KEY, col1, col2, [...])
UPD: E, a proposito, GETSID (db) restituisce Stringa Oggetto.
Nella prima query si passa "42". sql executor lo otterrà sempre come stringa in modo da non dover usare "'" (Single Quote). puoi dare direttamente un valore. se stai usando "mi piace" in quel momento hai bisogno di virgolette singole altrimenti va bene. –