2012-02-08 30 views
21

Tôi muốn thực hiện một truy vấn sql:
Android - sqlite tại khoản sử dụng giá trị từ mảng

select * from table_name where id in (23,343,33,55,43); 

Các giá trị trong tại khoản cần phải được thực hiện từ một mảng của chuỗi:

String values[] = {"23","343","33","55","43"} 

Làm thế nào tôi có thể đạt được điều đó?

10X!

Trả lời

32

Tôi tin rằng một đơn giản toString() chủ yếu sẽ làm các trick:

String values[] = {"23","343","33","55","43"}; 
String inClause = values.toString(); 

//at this point inClause will look like "[23,343,33,55,43]" 
//replace the brackets with parentheses 
inClause = inClause.replace("[","("); 
inClause = inClause.replace("]",")"); 

//now inClause will look like "(23,343,33,55,43)" so use it to construct your SELECT 
String select = "select * from table_name where id in " + inClause; 
+0

10X, Nó hoạt động :) –

+1

Nếu một số giá trị của bạn đến từ người dùng nhập vào bạn đang mở các cuộc tấn công SQL injection có thể hoặc ít nhất là tai nạn. Bạn nên xem xét các hàm 'DatabaseUtils.html # sqlEscapeString (java.lang.String)' và các hàm liên quan trước khi đưa người dùng nhập vào các câu lệnh sql. – satur9nine

+1

Bạn nên chắc chắn rằng không có giá trị nào của bạn chứa [hoặc] trước khi thực hiện việc này thay thế. Một cách tốt hơn là lấy chuỗi con giữa ký tự đầu tiên và cuối cùng và gói trong (và) – SDJMcHattie

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