data storage android

23
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM LẬP TRÌNH THIẾT BỊ DI ĐỘNG SE312 SEMINAR SUBJECT: DATA STORAGE IN ANDROID Giáo viên hướng dẫn: Cáp Phạm Đình Thăng Sinh viên thực hiện: +Nguyễn Văn Sinh 10520130 + Tôn Ngọc Tẩn 10520133

Upload: royalknight2902

Post on 27-May-2015

573 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Data storage Android

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM

LẬP TRÌNH THIẾT BỊ DI ĐỘNGSE312

SEMINAR SUBJECT:DATA STORAGE IN ANDROID

Giáo viên hướng dẫn: Cáp Phạm Đình ThăngSinh viên thực hiện:

+Nguyễn Văn Sinh 10520130+ Tôn Ngọc Tẩn 10520133

Page 2: Data storage Android

I. Giới thiệu về cách lưu trữ dữ liệu trên Android

• Share Preference

•Lưu trữ bằng tập tin( Internal Storage và Extral Storage)

•SQLite Database

•Network Conection

Trên android bạn có thể có nhiều cách lựa chọn để lưu

File tùy vào độ bảo mật và yêu cầu tiện dụng, linh hoạt của

bạn. Bạn có thể lựa chọn các cách sau:

Page 3: Data storage Android

1. Lưu trữ dưới dạng Shared Preferences

•Lớp SharedPreferences cung cấp một khuôn khổ chung cho phép bạn 

lưu trữ và lấy cặp giá trị dưới dạng key-value.

•Để lấy một đối tượng của SharedPrefenrences bạn sử dụng 1 trong 2 

phương thức sau:

• getSharedPreferences();

• getPreferences();

Page 4: Data storage Android

1. Lưu trữ dưới dạng Shared Preferences

Để ghi giá trị vào trong bộ nhớ đệm bạn cần sử dụng một đối tượng editor:

•Gọi một editor thông qua SharedPreference.Editor.

•Thêm các giá trị vào bộ nhớ đệm bằng các hàm putString(), putInt(), putBoolean().

Đẩy giá trị vào bộ nhớ bằng hàm editor.comit().

Để lấy giá trị trong bộ nhớ thì chúng ta cần chỉ cần sử dụng đối tượng SharedPreferences để lấy giá trị thông qua hàm getString(), getInt(),…

Page 5: Data storage Android

1. Lưu trữ dưới dạng Shared Preferences

Page 6: Data storage Android

btSave = (Button)findViewById(R.id.btSave);btSave.setOnClickListener(new View.OnClickListener() {

@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString name = edtName.getEditableText().toString().trim();String id = edtID.getEditableText().toString().trim();    SharedPreferences editPreference = getSharedPreferences(CONFIGURATION_NAME,    Activity.MODE_PRIVATE);    Editor editor = editPreference.edit();        editor.putString(id, name);    editor.commit();}});

1. Lưu trữ dưới dạng Shared Preferences

Page 7: Data storage Android

btLoad = (Button)findViewById(R.id.btLoad);btLoad.setOnClickListener(new View.OnClickListener() {

@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString id = edtID.getEditableText().toString().trim();SharedPreferences editPreference =getSharedPreferences(CONFIGURATION_NAME,Activity.MODE_PRIVATE);edtName.setText(editPreference.getString(id,CONFIGURATION_NAME));}});

1. Lưu trữ dưới dạng Shared Preferences

Page 8: Data storage Android

2. Lưu và đọc tập tin trong android

•Các lớp tiện ích sử dụng thường nằm trong gói android.os.Enviroment

• Kiểm tra môi trường các thiết bị về dữ liệu.

• Lấy thông tin từ thiết bị về khả năng lưu trữ

•Để xử lí các thao tác trên file được tốt ta sử dụng các lớp nằm trong gói java.os:

• File: Thao tác xử lí file.

• FileInputStream: đọc nội dung file.

• FileOutputStream:Ghi nội dung file.

Page 9: Data storage Android

2. Lưu và đọc tập tin trong android

private void writeFile(String inText) throws IOException{FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND);OutputStreamWriter osw = new OutputStreamWriter(fos);

osw.write(inText + "\n");osw.flush();osw.close();fos.close();}

Ghi File:

Page 10: Data storage Android

2. Lưu và đọc tập tin trong android

Đọc File:private String readFile() throws IOException{FileInputStream ios = openFileInput(FILE_NAME);InputStreamReader isr= new InputStreamReader(ios);char[] data = new char[1024];StringBuffer strBuffer = new StringBuffer();    int len = 0;while((len = isr.read(data)) != -1){strBuffer.append(new String(data, 0, len));}isr.close();ios.close();return strBuffer.toString();}

Page 11: Data storage Android

3. Lưu trữ với cơ sở dữ liệu trong Android

Giới thiệu:

•Severless của SQL database engine

•Nhẹ gọn và năng động với dung lượng khoảng 300kb (chiếm dữ liệu trong kho ứng dụng của thiết bị)

•Đa nền tảng và không cần cấu hình mạnh.

•Không hỗ trợ một số tính năng

•Lưu trữ data/data/package_name/database

Page 12: Data storage Android

3. Lưu trữ với cơ sở dữ liệu trong Android

Đối tượng SQLiteOpenHelper

•Như một đối tượng kết nối đến database

•Khởi tạo và quản lí các phiên bản database

•Cần tham chiếu đến một đối tượng Context

Chúng ta cần xây dựng một lớp kế thưa từ lớp SQLiteOpenHelper để dễ sử dụng

Page 13: Data storage Android

3. Lưu trữ với cơ sở dữ liệu trong Android

Các phương thức:

•public void onCreate(SQLiteDatabase db): Tạo bảng và khởi tạo các giá trị cho bảng

•public void onUpgrade(SQLiteDatabase db, int version_old, int version_new): xóa bảng cũ và tạo lại bảng mới

•public void onOpen(SQLiteDatabase db): mởi một đối tượng SQLiteDatabase (ít sử dụng)

•close(): đóng đối SQLiteOpenHelper hiện tại

•getWritableDatabase(): trả về đối tượng SQLiteDatabase để đọc và ghi

•getReadableDatabase(): trả về đối tượng SQLiteDatabase chỉ để đọc

Page 14: Data storage Android

Đối tượng thực thi SQLiteDatabase

3. Lưu trữ với cơ sở dữ liệu trong Android

•Là đối tượng đại diện cho cơ sở dự liệu mà ta tạo ra trong ứng dụng

•Đối tượng trực tiếp sẽ thực thi các câu lệnh SQL.

Phương thức trong SQLiteDatabase:

•execSQL(String sql): thực thi câu lệnh sql thông thường, không trả về kết quả.

Page 15: Data storage Android

3. Lưu trữ với cơ sở dữ liệu trong Android

Phương thức trong SQLiteDatabase:

•delete(String table, String whereClause, String[] whereArgs): xóa 1 dòng dữ liệu trong 1 bảng

•rawQuery(String sql, String[] selectionArgs): thực thi một câu lệnh sql với tham số nếu có, và trả về Cursor

•close(): đóng đối tượng.

Page 16: Data storage Android

3. Lưu trữ với cơ sở dữ liệu trong Android

Đối tượng Cursor

•Là một đối tượng được trả về từ phương thức họ query

•Hành động như con trỏ đến một tập hợp các dữ liệu nằm bên dưới cơ sơ dữ liệu.

•Quản lí việc kiểm soát các dòng dữ liệu(row) trong tập kết quả truy vấn cơ sở dữ liệu.

Page 17: Data storage Android

Phương thức:

3. Lưu trữ với cơ sở dữ liệu trong Android

  moveToFirst :chuyển con trỏ  tới dòng đầu  tiên 

  moveToNext : chuyển  con trỏ tới dòng  tiếp theo. 

  moveToPrevious: chuyển con trỏ tới dòng duyệt  trước đó. 

  getCount  :trả về  số dòng của kết quả  truy vấn. 

  getColumnIndexOrThrow: trả về chỉ số của cột xác định  

  getColumnName: trả về  tên của cột có chỉ số  truyền vào 

  getColumnNames:  trả về mảng  tên các cột 

  moveToPosition: đưa con trỏ đến dòng xác định. 

  getPosition: trả về vị  trí con trỏ 

Page 18: Data storage Android

II. Sử dụng Content Provider

• Content Provider là một thành phần cơ bản trong Android SDK.

• Chuẩn chia se dữ liệu cho các ứng dụng khác nhau trên android:

• Là cách thức tiêu chuẩn để chia se các dữ liệu.

• Call log hoăc contact list có thể được truy xuất bằng content provider.

• Sử dụng các chỉ định tài nguyên URI (Uniform Resource Identifier) để truy xuất.

• Đối tượng trả về là đối tượng kết quả Cursor.

Page 19: Data storage Android

II. Sử dụng Content Provider

Mọi content provider, đều sử dụng chung 1 interface để tìm và trả về dữ liệu, bao gồm việc thêm, bớt và sửa dữ liệu.

Việc này được thực hiện thông qua các đối tượng ContentResolver khi gọi getContentResolver():

ContentResolver cr = getContentResolver();

Page 20: Data storage Android

II. Sử dụng Content Provider

Nội dung chuỗi URI:

•A – Tiền tố mặc định của 1 URI, không thay đổi được.

•B – đăng kí provider với hệ điều hành android.

•C – Xác định loại dữ liệu nào cần lấy về

•D – ID chính xác của bản ghi cần yêu cầu.

Page 21: Data storage Android

II. Sử dụng Content Provider

Sử dụng Content Provider có sẵn:

•Android cung cấp một tập hợp các ContentProvider có sẵn trong tất cả các ứng dụng.

•Tập hợp những ứng dụng Content Provider của Android đã xây dựng sẵn nằm trong android.provider

•Sử dụng định danh tài nguyên URI để truy xuất

•Đối tượng trả về dạng Cursor

•Để sử dụng các Content Provider có sẵn phải sử dụng uses-permission trong AndroidMainfast.xml

Page 22: Data storage Android

II. Sử dụng Content Provider

Xây dựng Content Provider:

•Hiện thực và kế thừa từ một lớp có sẵn là Content Provider của Android.

•Hiện thực và override tất cả các phương thức:

• onCreate(): khởi tạo provider.

• getType(): Trả về kiểu dữ liệu MIME được đưa ra trong chuẩn của URI

• Insert(), update(), delete(): thao tác cập nhật nếu cần thiết.

• Query(): trả về dữ liệu được yêu cầu.

•Cung cấp một URI cho ứng dụng khác truy cập

• Khai báo trong AndroidMainfast.xml.

Page 23: Data storage Android

II. Sử dụng Content Provider

Xây dựng Content Provider: