2014-07-17 15 views
7

Tôi nhận được IllegalArgumentException ở trên khi thực thi hàm bên dưới. Những gì tôi không nhận được là khi tôi chạy trình gỡ rối, các giá trị giá trị chỉ rõ ràng chứa 4 đối số, như nó cần.Quá nhiều đối số liên kết. 5 đối số đã được cung cấp nhưng câu lệnh cần 4 đối số

Vì vậy, ...

(1) Đối số thứ năm bí ẩn này đến từ đâu?

(2) Làm cách nào để tiếp cận việc tìm lỗi này?

db.update(
    UppdragEntry.TABLE_NAME, 
    values, 
    selection, 
    selectionArgs); 
+0

* Lựa chọn * chứa thông tin sau: Lựa chọn chuỗi = "_id"; String [] selectionArgs = {"=" + personId}; – abc32112

Trả lời

34

Lựa chọn bao gồm: Lựa chọn chuỗi = "_id"; String [] selectionArgs = {"=" + personId};

Bạn có một giá trị trong selectionArgs nhưng không có ? giữ chỗ cho nó trong selection.

Thay đổi nó để

String selection = "_id = ?"; 
String[] selectionArgs = { "" + personId }; 

Phương pháp xây dựng một chuỗi SQL. Được cung cấp ContentValues được tạo thành ? đối số giữ chỗ và liên kết. Các arg lựa chọn bổ sung cũng được cung cấp dưới dạng đối số liên kết và chúng phải được đối sánh với số lượng bằng nhau là ? trình giữ chỗ.

+0

Hoạt động, cảm ơn bạn! – abc32112

+1

Tôi đã có? trong selectionArgs nhưng trong trường hợp chuỗi tôi đã chuyển đổi? vào '?' đó là một sai lầm. –

+0

Vâng, tốt hơn hết là thêm String.valueOf (personId) vào selectionArgs. – SanchelliosProg

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