Sử dụng con trỏ trong phát triển Android là gì?


76

Tôi đã xem qua một số mã trên internet liên quan đến kết nối cơ sở dữ liệu, truy xuất. Tôi đã thấy Cursor cur1= moveToFirst()trong nhiều mã, tôi muốn biết công dụng của con trỏ là gì và tại sao chúng tôi sử dụng moveToFirst()khi tôi mới làm quen với Android.


Câu trả lời:


145

Con trỏ là Giao diện đại diện cho một bảng 2 chiều của bất kỳ cơ sở dữ liệu nào. Khi bạn cố gắng truy xuất một số dữ liệu bằng câu lệnh SELECT , thì cơ sở dữ liệu trước tiên sẽ tạo một đối tượng CURSOR và trả về tham chiếu của nó cho bạn.

Con trỏ của tham chiếu được trả về này đang trỏ đến vị trí thứ 0, vị trí này được gọi khác như trước vị trí đầu tiên của Con trỏ , vì vậy khi bạn muốn truy xuất dữ liệu từ con trỏ, trước tiên bạn phải di chuyển đến bản ghi đầu tiên, vì vậy chúng tôi phải sử dụng moveToFirst

Khi bạn gọi phương thức moveToFirst () trên Con trỏ , nó sẽ đưa con trỏ đến vị trí đầu tiên . Bây giờ bạn có thể truy cập dữ liệu có trong bản ghi đầu tiên


64

Nói một cách đơn giản, Con trỏ là một giao diện cho phép trả về tập hợp dữ liệu truy vấn của bạn. moveToFirst()được sử dụng để trỏ vị trí con trỏ từ nơi bạn muốn lấy dữ liệu từ con trỏ của mình. Có nhiều phương pháp moveToLast(), moveToNext(), moveToPrevious(),moveToPosition(position) nhờ đó bạn có thể lặp qua con trỏ của bạn bằng cách mong muốn.

Ví dụ: bạn có dữ liệu trong Con trỏ của mình

Lalit
Rithesh
Paresh
Chandra
  • moveToFirst()- Nếu bạn sử dụng cursor.moveToFirst()thì trong trường hợp này nó sẽ trỏ Lalit, vì nó là dữ liệu đầu tiên trong con trỏ của bạn. Để lấy dữ liệu tiếp theo từ con trỏ, bạn có thể sử dụng moveToNext().

  • moveToLast()- Điều này sẽ trỏ Chandra làm dữ liệu hiện tại trong con trỏ của bạn. Để lấy dữ liệu trước đó từ con trỏ, bạn có thể sử dụng moveToPrevious()


27

Con trỏ đại diện cho kết quả của một truy vấn và về cơ bản trỏ đến một hàng của kết quả truy vấn. Bằng cách này, Android có thể đệm các kết quả truy vấn một cách hiệu quả; vì nó không phải tải tất cả dữ liệu vào bộ nhớ.

Để lấy số phần tử của truy vấn kết quả, hãy sử dụng getCount()phương pháp.

Để di chuyển giữa các hàng dữ liệu riêng lẻ, bạn có thể sử dụng các phương thức moveToFirst()moveToNext(). Các isAfterLast()phương pháp cho phép để kiểm tra xem phần cuối của kết quả truy vấn đã đạt tới.

Con trỏ cung cấp gõ get * () phương pháp, ví dụ getLong(columnIndex),getString(columnIndex) để truy cập dữ liệu cột cho vị trí hiện tại của kết quả. "ColumnIndex" là số cột mà bạn đang truy cập.

Con trỏ cũng cung cấp getColumnIndexOrThrow(String) phương thức cho phép lấy chỉ mục cột cho tên cột của bảng.

Một con trỏ cần được đóng lại bằng close()lời gọi phương thức. Một truy vấn trả về một đối tượng Con trỏ.


Tôi tự hỏi nếu tất cả các dữ liệu đã được lấy vào thời điểm các con trỏ được tạo ra hoặc nếu có thể được trì hoãn cho đến khi bạn gọi các phương thức như getCount () và moveTo * ()
geekley

10

Con trỏ giống như ResultSet trong java, nó có các hàng được trả về bởi một số truy vấn với con trỏ của nó. moveToFirst(), moveToNext()moveToPosition(position)đặt con trỏ đến vị trí mong muốn.



2

Sử dụng giao diện Con trỏ làm bộ sưu tập dữ liệu.

Nó tương tự như a CursorPL/SQLchỗ nó chứa một hoặc nhiều hàng được trả về bởi một số truy vấn với con trỏ của nó.

Các phương pháp sau có sẵn trong Cursorgiao diện lặp qua Cursor, đặt Cursor pointervị trí mong muốn:

  • moveToFirst ()
  • moveToLast ()
  • moveToNext ()
  • moveToPrevious ()
  • moveToPosition (vị trí)

0

Giao diện con trỏ cung cấp quyền truy cập đọc-ghi ngẫu nhiên vào tập kết quả do truy vấn cơ sở dữ liệu trả về.

Việc triển khai con trỏ không bắt buộc phải được đồng bộ hóa vì vậy mã sử dụng Con trỏ từ nhiều luồng phải thực hiện đồng bộ hóa của chính nó khi sử dụng Con trỏ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.