Bài 6: Working with DATA

1,740 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,740
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
67
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bài 6: Working with DATA

  1. 1. ANDROID APPLICATION DEVELOPMENT Working with DATAhoccungdoanhnghiep.com
  2. 2. Nội dung Data Storage in Android Shared Preferences SQLite databasehoccungdoanhnghiep.com
  3. 3. Data Storage in Android Android cung cấp nhiều cơ chế để lưu dữ liệu, và tùy vào nhu cầu mà LTV lựa chọn phương án hợp lý Các cơ chế lưu dữ liệu:  Shared Preferences: Dùng để lưu các dữ liệu nguyên thủy ở dạng cặp: key/value  Internal Storage: Lưu dữ liệu trên bộ nhớ trong của thiết bị  External Storage: Lưu trữ dữ liệu ở bộ nhớ ngoài (thẻ nhớ, external mounted partition)  SQLite database: lưu dữ liệu ở dạng có cấu trúc trong một cơ sở dữ liệuhoccungdoanhnghiep.com  Network connection: kết nối đến server mạng và
  4. 4. Shared Preferences Class SharedPreferences cung cấp sẵn bộ framework để save & get ra cặp key-value đã lưu trước đó Các dạng dữ liệu cơ bản được dùng với share- pref: int, string, float, long, booleanhoccungdoanhnghiep.com
  5. 5. SharedPreferences -> lưu/edit data Khai báo string refPath ảo để truy xuất data: String PREF_MY_INFO_PATH = "vn.com.smartservice.myinfo” Khai báo các key string để lưu values tương ứng  String PREF_NAME = "PREF_NAME”  String PREF_AGE = "PREF_AGE”  String PREF_SEX = "PREF_SEX” Ở activity L6DataStorageActivity, cần save data, thực hiện các việc sau:  Khởi tạo object của class SharePreference: SharedPreferences myinfosets = getSharedPreferences(PREF_MY_INFO_PATH , 0);  Khởi tạo object editor có khả năng save data: SharedPreferences.Editor editor = myinfosets.edit();  save data bằng cách gọi lệnh put[TypeOfData](key, value)  editor.putBoolean(PREF_SEX, true/false);  editor.commit(); // save data hoccungdoanhnghiep.com
  6. 6. SharedPreferences -> get saved data Ở activity ViewMyInfo, ta lấy ra data đã lưu sẵn từ trước. Thực hiện các việc sau:  Khởi tạo object của class SharePreference: SharedPreferences myinfosets = getSharedPreferences(PREF_MY_INFO_PATH , 0);  Dùng obj đó để get ra data tương ứng đã được lưu:  boolean sex = myinfosets.getBoolean(PREF_SEX, false); // trong trường hợp tìm không thấy dữ liệu đã được lưu, false sẽ được tự động trả về  Tương tự cho các kiểu data khác hoccungdoanhnghiep.com
  7. 7. Sử dụng SQLite database Android hỗ trợ hoàn toàn SQLite databases: create db, create table, insert, delete, update, select. SQLite db, tham khảo: http://www.sqlite.org/ Các datatypes cung cấp bởi sqlite: http://www.sqlite.org/datatypes.html Cách tốt nhất là thừa kế từ lớp SQLiteOpenHelper để thao tác với db:  Ở thời điểm onCreate, db chỉ được tạo mới khi chưa tồn tại db nào  Đưa vào khởi tạo các bảng ở onCreate  Db không được load lên cho đến khi có một yêu cầu truy xuất vào db Để read/write với db, gọi vào các hàm getWritableDatabase() và getReadableDatabase() hoccungdoanhnghiep.com
  8. 8. Tạo lớp xử lý db thừa kế SQLiteOpenHelper File > New > Class  Name: DatabaseHelper  Package: vn.com.smartservice.lib  SupperClass: SQLiteOpenHelper  Mở file DatabaseHelper.java vừa tạo, Override các hàm onCreate, onUpgrade để sử dụng File > New > Class > MyNoteAdapter.java  Class MyNoteAdapter.java sẽ đóng vai trò layer để access db  Viết các hàm để truy xuất, insert,… dữ liệu cần thiếthoccungdoanhnghiep.com
  9. 9. Tạo mới SQLite database Mở file DatabaseHelper.java:  Override hàm onCreate  Chạy query để khởi tạo db: "CREATE TABLE mynotes (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT);"hoccungdoanhnghiep.com
  10. 10. Write dữ liệu vào db  Để write dữ liệu, phải đọc vào db ở dạng writetable thông qua việc gọi hàm: getWritableDatabase():  Mở file MyNoteAdapter.java  Create method: createNote(String title, String content) làm các việc sau:  kết nối đến db dạng write: DatabaseHelper. getWritableDatabase()  Tạo object của đối tượng ContentValues để put vào set các data: ContentValues cv = new ContentValues();  put data vào: o cv.put("title", title); o cv.put("content", content);  gọi lệnh insert dữ liệu: db.insert(tên-bảng,null,cv)hoccungdoanhnghiep.com  Đóng kết nối bằng cách gọi vào db.close()
  11. 11. Lấy dữ liệu từ db ra  Android sử dụng lớp Cursor để lưu dữ liệu đã lấy được từ db ra. Cursor đóng vai trò là 1 result set  Mở file MyNoteAdapter.java  Create method: getNote()  Query db: database.rawQuery("select * from mynotes ", null);  Từ kết quả trả về, lấy ra dữ liệu dòng đầu tiên và hiển thị: Toast.makeText(getApplicationContext(), c.getString(1) + "," + c.getString(2), 5)  Cần chú ý, trong quá trình read data, cần phải giữ connection luôn mở. Do đó, chỉ để đọc dữ liệu, tahoccungdoanhnghiep.com
  12. 12. Sử dụng db đã tạo sẵn  Copy file db đã tạo vào thư mục /assets/ trong project  Khi thực hiện truy cập db, ta phải copy db này vào thư mục: /data/data/package-name/databases/  Sau khi copy thành công, việc truy cập có thể được thực hiệnhoccungdoanhnghiep.com
  13. 13. Bài tập về nhà Phát triển tiếp phần MyInfo:  Thay việc gõ age = thanh seekbar  Đổi màn hình hiển thị My Info lên trước, thông báo người dùng chưa đưa info vào  Thêm Toast thông báo kết quả Phát triển tiếp phần My Note  Viết hàm lấy ra MyNote có id bất kỳ đã save  Hiển thi lên màn hình  Edit note đó  Save  Thêm Toast thông báo việc save đã hoàn tất/có lỗihoccungdoanhnghiep.com
  14. 14. Tham khảo  http://developer.android.com/guide/topics/data/data-storaghoccungdoanhnghiep.com

×