2012-02-07 19 views
12

Ho variabile:SQLite .query metodo(), clausola WHERE è solo prendendo doppi apici stringhe

String owner="Mike"; 
String[] columns ={"quantity", "price","owner"} 

mio cursore sta cercando di ottenere
Cursor findEntry = db.query("sku_table", columns, "owner="+owner, null, null, null, null);

ho ottenuto un errore tale errore di colonna

android.database.sqlite.SQLiteException: no such column: owner: , while compiling: SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike 

Ma se prendo questa query:

SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike 

e aggiungere "" a Mike, e testato in browser sqlite per eseguire la query, torno indietro alla riga. La query di lavoro si presenta così:

SELECT quantity, price, owner, FROM sku_table WHERE owner="Mike" 

Qualcuno può cadere alcuni spunti su come faccio a incorporare le virgolette? Altro che l'uso \" Grazie!

risposta

77

Ci dispiace, ma questo è esattamente il motivo per cui si dovrebbe lavorare con ciò che il metodo offre @Leandros e @Jake stanno aiutando nella direzione completamente sbagliata dispiace dire che ...

l'unica soluzione si dovrebbe usare è questo:!!

Cursor findEntry = db.query("sku_table", columns, "owner=?", new String[] { owner }, null, null, null); 

ps: Sì, ho votato entrambe le risposte perché potrebbero funzionare, ma fornire una soluzione che non dovrebbe essere utilizzata.

Aggiornamento:

Se avete bisogno di più di una in cui condizione, basta aggiungerlo come si farebbe in una query normale

Cursor findEntry = db.query("sku_table", columns, "owner=? and price=?", new String[] { owner, price }, null, null, null); 

L'ordine del ? ei new String[] {...} elementi devono essere gli stessi !

+0

Sì, hai ragione. Dannato, usalo anche nelle mie app. ^^ – Leandros

+1

Errare humanum est :) – WarrenFaith

+0

E se avessimo bisogno di più di una condizione, ad es., Prezzo> 15 e proprietario = 'mike' – dinesh

1

SELECT quantity, price, owner, FROM sku_table WHERE owner='Mike' questa è la corretta SELECT. Si dimentica i '' (apici)

0
Cursor findEntry = db.query("sku_table", columns, "owner='"+owner+"'", null, null, null, null); 
0

So che questa è una vecchia questione, ma anche si può fare in questo modo:

Cursor findEntry = db.query("sku_table", columns, "owner=\'"+owner+"\'", null, null, null, null);

ho appena fatto nella mia app e ha funzionato come previsto.

risposta di Jake era simile, ma probabilmente non avrebbe funzionato senza la \ prima della '

+0

L'escape di virgolette singole in una stringa con doppia quotatura è possibile ma non obbligatorio. –

+0

@Randy: Perché dovresti rispondere a una domanda con una risposta sbagliata a * anno * dopo aver dato una risposta migliore e corretta? Tu ** dovresti ** non usare mai il tuo modo di creare una query. – WarrenFaith

+0

@WarrenFaith Per favore, per amore di dio, basta smettere di dire "È sbagliato" e dicci PERCHÉ è sbagliato? Nessuno ascolterà una persona che dice semplicemente che qualcosa è sbagliato e non ne dà una ragione ... – Timmiej93

1
public Cursor show_vol(String vol,String bk,String hadnu) 
      { 
       SQLiteDatabase db = this.getReadableDatabase(); 
       String[] columns ={"hadith"};//colums name that you select 

       Cursor res = db.query("volume2", columns, "hadithno=?", new String[] { hadnu }, null, null, null); 

//volume2 is table name and hadithno is colume name l 
//select hadith from volume2 where hadithno=hadnu //working like s 

1. List item 

       return res; 
      } 
0

il modo più semplice è quello di utilizzare col1 SELECT, col2 FROM nome_tabella WHERE col =' qualcosa'; proprio come Leandros detto, il mio problema era le virgolette singole, thnx