Hướng dẫn lập trình cơ bản với Android - Phần 23

Ở Bài 6 mình đã đề cập về cơ sở dữ liệu SQLite Database, dạng dữ liệu này không

public cho các ứng dụng khác sử dụng, dữ liệu của ứng dụng nào thì ứng dụng đó

sử dụng.

1 lợi thế của dữ liệu dưới dạng Content Provider là public, tất cả các ứng dụng đều

có thể truy cập và sử dụng.

Phần này các bạn sử dụng ProjectDemo là ContentProviderDemo2 trong

sourcecode đi kèm ban đầu.

Demo này chỉ đơn giản là đọc lại toàn bộ dữ liệu trong CSDL Books được tạo

trong phần 2.

pdf6 trang | Chuyên mục: Android | Chia sẻ: dkS00TYs | Lượt xem: 1788 | Lượt tải: 1download
Tóm tắt nội dung Hướng dẫn lập trình cơ bản với Android - Phần 23, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
9. Test thử thành quả : 
Mỗi content Provider gắn với 1 Uri cụ thể, như trên thì ContentProvider Book có 
Uri là: 
Mã: 
com.vietandroid.provider.Books/books 
Để test thử , vẫn trong Project Demo ContentProviderDemo , các bạn có thể thêm 
2 Button Add Book và View All Books vào . Giao diện như sau: 
 Chúng ta sẽ thêm 1 Book vào CSDL thông qua URI này: 
Mã: 
 public void addBook(String title) 
 { 
 ContentValues values = new ContentValues(); 
 values.put(BookProvider.TITLE, title); 
 Uri uriInsert = 
getContentResolver().insert(BookProvider.CONTENT_URI, 
values); 
 if(uriInsert != null) 
 { 
 Toast.makeText(this, "Book's added", 
Toast.LENGTH_SHORT).show(); 
 } 
 Log.d(getClass().getSimpleName(),uriInsert.toStrin
g()); 
 } 
Kết quả : 
Truy vấn toàn bộ dữ liệu Books có trong CSDL 
Mã: 
 public void getAllBooks() 
 { 
 Uri uriGetListTitles = 
Uri.parse("content://com.vietandroid.provider.Books/boo
ks"); 
 Cursor c = managedQuery(uriGetListTitles, null, 
null, null, "title desc"); 
 if(c.moveToFirst()){ 
 do{ 
 String bookRecord = "ID = " + 
c.getString(c.getColumnIndex(BookProvider._ID)) + " 
Title = " + 
 c.getString(c.getColumnIndex(BookProvider.TITLE)); 
 Toast.makeText(this, bookRecord , 
Toast.LENGTH_LONG).show(); 
 }while(c.moveToNext()); 
 } 
 } 
Kết quả : 
[IMG
1.png[/IMG] 
3. Sử dụng dữ liệu Content Provider từ 1 ứng dụng bất kỳ 
Ở Bài 6 mình đã đề cập về cơ sở dữ liệu SQLite Database, dạng dữ liệu này không 
public cho các ứng dụng khác sử dụng, dữ liệu của ứng dụng nào thì ứng dụng đó 
sử dụng. 
1 lợi thế của dữ liệu dưới dạng Content Provider là public, tất cả các ứng dụng đều 
có thể truy cập và sử dụng. 
Phần này các bạn sử dụng ProjectDemo là ContentProviderDemo2 trong 
sourcecode đi kèm ban đầu. 
Demo này chỉ đơn giản là đọc lại toàn bộ dữ liệu trong CSDL Books được tạo 
trong phần 2. 
Như mình đã nói ở trên, chỉ cần lấy được Uri của ContentProvider cần lấy và các 
tên của các trường dữ liệu thì chúng ta có thể truy vấn được hết. 
Trong hàm onCreate() các bạn thêm vào: 
Mã: 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.main); 
 Uri uriGetListTitles = 
Uri.parse("content://com.vietandroid.provider.Books/boo
ks"); 
 Cursor c = managedQuery(uriGetListTitles, null, 
null, null, "title desc"); 
 if(c != null) 
 { 
 if(c.moveToFirst()){ 
 do{ 
 String bookRecord = "ID = " + 
c.getString(c.getColumnIndex("_id")) + " Title = " + 
 c.getString(c.getColumnIndex("title")); 
 Toast.makeText(this, bookRecord , 
Toast.LENGTH_LONG).show(); 
 }while(c.moveToNext()); 
 } 
 } 
 else { 
 Toast.makeText(this, "Database is emtpy", 
Toast.LENGTH_SHORT).show(); 
 } 
 } 
2 trường dữ liệu ở đây được định nghĩa ở trên là "_id" và "title". Phần truy vấn vẫn 
như vậy. 
Kết quả : 

File đính kèm:

  • pdfHướng dẫn lập trình cơ bản với Android - Phần 23.pdf
Tài liệu liên quan