2011-10-26 44 views

Trả lời

32

Đây là một giao diện đơn giản mà bổ sung thêm hai lĩnh vực:

public interface BaseColumns 
{ 
    /** 
    * The unique ID for a row. 
    * <P>Type: INTEGER (long)</P> 
    */ 
    public static final String _ID = "_id"; 

    /** 
    * The count of rows in a directory. 
    * <P>Type: INTEGER</P> 
    */ 
    public static final String _COUNT = "_count"; 
} 

cơ sở dữ liệu nội sqlite sử dụng trong Android, đi kèm với một cột _id rằng autoincrements và có chức năng như một khóa chính. Điều này cũng lập bản đồ tốt với giao diện ContentProviders

62

Giao diện BaseColumns cung cấp tên cho các cột _ID_COUNT rất phổ biến.

Sử dụng tên phổ biến cho phép nền tảng Android (và nhà phát triển) giải quyết bất kỳ mục dữ liệu nào, bất kể cấu trúc tổng thể của nó (tức là các cột không phải ID khác) một cách thống nhất. Định nghĩa các hằng số cho các chuỗi thường được sử dụng trong một giao diện/lớp tránh lặp lại và lỗi chính tả trên mã.

Sử dụng một cột tên là _id (giá trị liên tục của BaseColumns._ID) là bắt buộc bởi CursorAdapter, triển khai của một ContentProvider và khác những nơi mà bạn trao đi một Cursor cho nền tảng Android để làm việc cho bạn. Ví dụ: bộ điều hợp của một ListView sử dụng cột _ID để cung cấp cho bạn ID duy nhất của mục danh sách được nhấp trong OnItemClickListener.onItemClick(), mà không cần phải chỉ định rõ ràng cột ID của bạn là gì mỗi lần.

hay không để thực hiện giao diện bao gồm duy nhất của hằng số hoặc tham khảo chúng với tên đầy đủ của họ, ví dụ: BaseColumns._ID là một vấn đề của hương vị. Tôi cá nhân thích thứ hai, bởi vì nó rõ ràng hơn nơi _ID là đến từ và trước đây cảm thấy giống như một sự lạm dụng thừa kế.

+0

** thnx ** nên nó có nghĩa là chúng ta không cần phải lấy id (có nghĩa là khóa chính) của bảng, autmaticaly của nó có sẵn từ BaseColumns._ID –

+0

Bạn vẫn phải lấy cột ID trong các truy vấn 'SELECT',' BaseColumns._ID' chỉ xác định * tên * của cột ID đó. –

+0

bất kể tên cột id chính nào được thay thế bằng BaseColumns._ID khi biên dịch truy vấn. đúng không? –

1

Giao diện BaseColumn chỉ cung cấp cột tên _ID và _COUNT. Bạn vẫn phải chỉ định các cột sử dụng chúng khi xây dựng bảng. Ví dụ, để tạo ra một cột bằng cách sử dụng tên cột _ID bạn có thể làm như sau:

public static final String CREATE_TABLE = 
    "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" 
    + _ID + " INTEGER PRIMARY KEY, " 
    + USERNAME + " TEXT NOT NULL, " 
    + PASSWORD + " TEXT NOT NULL, " 
    + EMAIL + " TEXT NOT NULL UNIQUE)"; 
Các vấn đề liên quan