Khi bạn cung cấp một chuỗi duy nhất là whereArgs
, một chuỗi duy nhất kết thúc trong lệnh SQL, như thể bạn đã viết điều này:
... WHERE _id IN ('1,2,42')
Điều này sẽ so sánh từng _id
giá trị so với giá trị '1,2,42'
, tất nhiên là không hoạt động.
Nếu bạn sử dụng ba điểm đánh dấu tham số và cung cấp ba chuỗi trong whereArgs
mảng, bạn sẽ kết thúc bằng ba chuỗi, như thế này:
... WHERE _id in ('1','2','42')
Điều này chỉ hoạt động khi _id
cột có mối quan hệ số nguyên, đúng với cột được khai báo là INTEGER PRIMARY KEY, nhưng không đúng với trường hợp chung.
API cơ sở dữ liệu Android không cho phép các tham số truy vấn có bất kỳ loại nào ngoài chuỗi. Khi sử dụng số nguyên, bạn chỉ nên chèn chúng trực tiếp (như trong câu trả lời của ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";