SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Bạn đang cố gắng truy xuất một mục trên chỉ mục 2 nhưng chỉ mục này thực sự không tồn tại (Kích thước con trỏ là 2 nên chỉ mục là 0,1).

Thay đổi vòng lặp của bạn:

if (result != null && result.moveToFirst()){
    do {
       Post post = new Post();
       post.setPostId(result.getInt(0));
       posts.add(post);
       ....
    } while (result.moveToNext());
}

Bây giờ nó sẽ hoạt động chính xác.

Lưu ý: Đừng quên gọi moveToFirst() phương thức di chuyển Con trỏ vào bản ghi đầu tiên (ngầm định được đặt trước hàng đầu tiên) và chuẩn bị cho việc đọc. Đây cũng là một phương pháp tiện dụng để kiểm tra xem Con trỏ có hợp lệ hay không.

Lưu ý 2: Không sử dụng chỉ mục cột, bạn có thể mắc lỗi khi đếm. Thay vì sử dụng tên cột - phương pháp này thường được khuyến nghị e.q. cursor.getColumnIndex("<columnName>")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tải dữ liệu spinner từ sqlite và mysql

  2. SQLite - Tạo mối quan hệ

  3. Các kiểu dữ liệu SQLite

  4. Xây dựng ứng dụng ưu tiên ngoại tuyến với Node.js và SQLite

  5. Cách tránh sử dụng + trong số phiên bản với SQLiteAssetHelper