2012-11-09 26 views
6

Tôi có một ứng dụng có hai hoạt động.Cách hoạt động của SQLiteOpenHelper Context

Một trong số chúng liệt kê một số giá trị trong khi giá trị mới khác thêm vào DB.

Tôi có một Mà lớp kéo dài từ SQLiteOpenHelper và quản lý các kết nối DB, truy vấn, vv

Bây giờ, tôi hiểu rằng các nhà xây dựng của SQLiteOpenHelper bạn phải vượt qua một bối cảnh được sử dụng để xác định xem nó có để tạo một DB mới hoặc mở một tệp hiện có.

Nhưng nếu tôi có một thể hiện của lớp SQLiteOpenHelper trong mỗi hoạt động, thì ngữ cảnh sẽ khác.

Có cách nào để tránh điều này không?

Cảm ơn.

Trả lời

5

Vượt qua ngữ cảnh Ứng dụng, (.getApplication()) thay vì Hoạt động. Bằng cách đó, cả hai trường hợp sẽ truy cập db bằng cách sử dụng cùng một ngữ cảnh.

2

Context có thể khác nhưng không tạo DB khác. SQLiteOpenHelper constructor có thông số name, đó là tên tệp DB. Nếu điều này tồn tại sẽ không tạo ra bất kể thông tin Context đã qua.

+0

Bối cảnh là một giao diện để truy cập vào tài nguyên hệ thống. Như đã đề cập bởi sabadow, cơ sở dữ liệu nào được xác định theo tên. –

1

Thực ra, cơ sở dữ liệu đã tạo là được kết hợp với gói ứng dụng của bối cảnh. Vì vậy, nó không quan trọng cho dù bạn đã thông qua bối cảnh ứng dụng hoặc bối cảnh hoạt động.

Context.java

/** 
* Open a new private SQLiteDatabase associated with this Context's 
* application package. Create the database file if it doesn't exist. 
... 
... 
*/ 
public abstract SQLiteDatabase openOrCreateDatabase(String name, 
     int mode, CursorFactory factory); 
Các vấn đề liên quan