2013-03-20 32 views
6

Tôi rất thú vị về chi tiết triển khai của Cursor trong Android. Tôi biết rằng về cơ bản nó chỉ là một interface cung cấp truy cập đọc ghi ngẫu nhiên cho tập kết quả được trả về bởi truy vấn cơ sở dữ liệu. Tôi tự hỏi về việc triển khai Cursor cụ thể:Con trỏ cơ sở dữ liệu Android được triển khai chi tiết như thế nào?

  1. Đây có phải là một loại cấu trúc dữ liệu lưu trữ kết quả được đặt từ cơ sở dữ liệu không?
  2. Hoặc nó chỉ là một cấu trúc chỉ xử lý một hàng?

Trả lời

6

là chỉ là một số cấu trúc dữ liệu mà các cửa hàng tập hợp kết quả từ cơ sở dữ liệu

Yes.

Hoặc đó là một số cấu trúc chỉ xử lý một hàng?

Không chính xác. Con trỏ có thể xử lý một hoặc nhiều hàng dựa trên truy vấn nguồn. Con trỏ là bản đồ dữ liệu và sẽ chứa nhiều hàng như nguồn (select) trả về truy vấn. Vì vậy, nếu truy vấn trả về hàng trăm hàng, các hàng này được chèn vào Cursor và Cursor chứa hàng trăm hàng này.

Bạn có thể tưởng tượng Con trỏ làm bản đồ dữ liệu có kích thước động (tương tự như Danh sách) nơi dữ liệu được đặt là "hàng". Mỗi hàng có id hàng riêng (số hàng, chúng ta có thể nói một số con trỏ) được tạo dần khi chúng được chèn vào con trỏ và bạn có thể đơn giản di chuyển giữa các hàng với số này. Rõ ràng mỗi con trỏ có "con trỏ thực tế" được định vị trước hàng đầu tiên (vị trí -1) vì vậy nếu bạn gọi số c.getString(0) sẽ bị ném vì không có gì để truy xuất.

Vì vậy, bạn luôn phải gọi số cursor.moveToFirst() chuẩn bị Con trỏ để đọc và nếu trống, phương thức trả về false vì không có hàng.

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