2012-02-07 24 views
12

Tôi có biến:.query SQLite() phương pháp, mệnh đề WHERE chỉ dùng dấu ngoặc kép chuỗi

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

con trỏ của tôi đang cố gắng để có được
Cursor findEntry = db.query("sku_table", columns, "owner="+owner, null, null, null, null);

Tôi đã nhận ra lỗi không có lỗi cột như vậy

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

Nhưng nếu tôi mất truy vấn này:

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

và thêm "" vào Mike và được thử nghiệm trong các trình duyệt sqlite để thực hiện truy vấn, tôi sẽ quay lại hàng. Truy vấn hoạt động như sau:

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

Ai đó có thể bỏ qua một số thông tin chi tiết về cách kết hợp dấu ngoặc kép? Ngoài sử dụng \" Cảm ơn!

Trả lời

77

Xin lỗi, nhưng đó là chính xác lý do tại sao bạn nên làm việc với những gì phương pháp cung cấp @Leandros và @Jake đang giúp theo hướng hoàn toàn sai Xin lỗi vì đã nói rằng ...

giải pháp duy nhất bạn nên sử dụng là:!

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

ps: Có, tôi đã bỏ phiếu bình chọn cả hai câu trả lời vì chúng có thể hoạt động nhưng cung cấp một giải pháp không nên sử dụng.

Cập nhật:

Nếu bạn cần nhiều hơn một nơi mà điều kiện, chỉ cần thêm nó như bạn sẽ làm trong một truy vấn bình thường

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

Thứ tự của các ?new String[] {...} yếu tố phải giống nhau !

+0

Có, bạn đã đúng. Damned, sử dụng nó trong ứng dụng của tôi, quá. ^^ – Leandros

+1

Errare humanum est :) – WarrenFaith

+0

Điều gì sẽ xảy ra nếu chúng tôi cần nhiều hơn một điều kiện., Giá> 15 và chủ sở hữu = 'mike' – dinesh

1

SELECT quantity, price, owner, FROM sku_table WHERE owner='Mike' đây là đúng SELECT. Bạn quên '' (dấu nháy đơn)

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

Tôi biết đây là một câu hỏi cũ, nhưng bạn cũng có thể làm điều đó như thế này:

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

tôi chỉ làm nó trong ứng dụng của tôi và nó làm việc như mong đợi.

câu trả lời Jake là tương tự, nhưng có lẽ sẽ không làm việc nếu không có sự \ trước khi '

+0

Thoát dấu nháy đơn trong chuỗi kép được trích dẫn là có thể nhưng không bắt buộc. –

+0

@Randy: Tại sao bạn trả lời một câu hỏi với câu trả lời sai * năm * sau một câu trả lời chính xác và tốt hơn? Bạn ** không nên sử dụng cách của bạn để tạo truy vấn. – WarrenFaith

+0

@WarrenFaith Bạn vui lòng, vì tình yêu của thần, chỉ cần ngừng nói "Đó là sai", và cho chúng tôi biết TẠI SAO nó sai? Không ai sẽ lắng nghe một người chỉ nói điều gì đó sai và không đưa ra lý do cho nó ... – 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

cách đơn giản nhất là sử dụng SELECT col1, col2 FROM tên_bảng ĐÂU col =' cái gì đó'; giống như Leandros cho biết, sự cố của tôi là dấu ngoặc đơn, thnx

Các vấn đề liên quan