Trường ĐH Quang Trung
KHOA CNTT
Lập trình Android
Bài 5: Lưu trữ dữ liệu
2017
Nội dung
1.
Lưu trữ dữ liệu cố định
2.
Lưu trữ dữ liệu với file trên bộ nhớ trong và bộ nhớ ngoài
3.
CSDL SQLite trong ứng dụng android
4.
Lưu trữ dữ liệu trên web
5.
Content Provider
Lập trình Android
2
1. Lưu trữ dữ liệu cố định với shared preferences
Android cung cấp sẵn một cơ chế đơn giản giúp chúng ta lưu trữ
nhanh dữ liệu
SharedPreference cho phép thực hiện lưu trữ và truy xuất dữ
liệu theo cặp khóa key-value cho các kiểu dữ liệu cơ bản
● Boolean
● Float
● Int
● Long
● String
Dữ liệu vẫn đảm bảo an toàn ngay cả khi ứng dụng được đóng
hoàn toàn
Lập trình Android – Module 1
3
1. Lưu trữ dữ liệu cố định với shared preferences
Khai báo truy xuất:
● Có thể sử dụng một trong 2 phương thức sau
getSharedPreferences: sử dụng truy xuất đến tập tin Preferences đã lưu
trữ bằng cách truyền vào tên tập tin
getPreferences: truy xuất đến tập tin Preference mặc định tương ứng với
Activity gọi thực thi
● Mặc định tập tin Preference được lưu trữ theo đường dẫn
Data/data/
/shared_prefs/<file_name>.xm
l
Lập trình Android – Module 1
4
1. Lưu trữ dữ liệu cố định với shared preferences
Lưu trữ dữ liệu:
● Tạo đối tượng Editor từ phương thức edit() của Preference
● Lưu trữ dữ liệu vào Preference thông qua phương thức put<KDL>:
putBoolean(Key, Value)
putFloat(Key, value)
putInt(Key, value)
putLong(Key, value)
putString(Key, value)
● ví dụ
Lập trình Android – Module 1
5
1. Lưu trữ dữ liệu cố định với shared preferences
Khai báo truy xuất:
● Các giá trị lưu trữ được truy xuất thông qua phương thức
get<KDL>:
getBoolean(Key, DefValue)
getFloat(Key, DefValue)
getInt(Key, DefValue)
getLong(Key, DefValue)
getString(Key, DefValue)
Ví dụ:
Lập trình Android – Module 1
6
2. Lưu trữ dữ liệu với file trên bộ nhớ trong và bộ nhớ ngoài
Bộ nhớ trong
● Bộ nhớ trong được cấp phát khi ứng dụng được cài đặt trên
thiết bị trên một thư mục riêng biệt.
● Chỉ có ứng dụng mới có thể truy xuất được bộ nhớ của ứng
dụng đó
Đường dẫn các tập tin được lưu trữ
Data/data//files
Phương thức truy xuất
getFilesDir-File
Lập trình Android – Module 1
7
2. Lưu trữ dữ liệu với file trên bộ nhớ trong và bộ nhớ ngoài
Bộ nhớ trong
● Truy xuất ghi tập tin;
Gọi phương thức openFileOutput() nhận về dữ liệu stream
cho đối tượng FileOutputStream
● Ghi dữ liệu với phương thức write()
● Đóng stream bằng phương thức close()
Ví dụ:
Lập trình Android – Module 1
8
2. Lưu trữ dữ liệu với file trên bộ nhớ trong và bộ nhớ ngoài
Bộ nhớ trong
● Truy xuất đọc tập tin;
Gọi phương thức openFileInput() nhận về dữ liệu stream
cho đối tượng FileInputStream
● Đọc dữ liệu với phương thức read()
● Đóng stream bằng phương thức close()
Ví dụ:
Lập trình Android – Module 1
9
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Truy xuất tập tin được lưu trữ trong drawable
Lập trình Android – Module 1
10
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Lập trình Android – Module 1
11
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Lập trình Android – Module 1
12
2. Lưu trữ dữ liệu với file trên bộ nhớ trong và bộ nhớ ngoài
Bộ nhớ ngoài
● Mỗi thiết bị Android cung cấp bộ nhớ ngoài cho
phép người dùng có thể lưu trữ và truy xuất trực
tiếp trên thiết bị hoặc thông qua máy tính khi kết nối
USB Storage.
● Bộ lưu trữ ngoài bao gồm hai dạng:
Bộ nhớ thiết bị (non-removable)
Bộ nhớ ngoài (sd-card, usb)
● Cần xin cấp quyền để truy xuất bộ nhớ ngoài
android.permission.WRITE_EXTERNAL_STORAGE
Lập trình Android – Module 1
13
2. Lưu trữ dữ liệu với file trên bộ nhớ trong và bộ nhớ ngoài
Lập trình Android – Module 1
14
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Lập trình Android – Module 1
15
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Lập trình Android – Module 1
16
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Lập trình Android – Module 1
17
2. Lưu trữ dữ liệu với file trên bộ nhớ trong
và bộ nhớ ngoài
Ví dụ:
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/MyFiles"); File file =
new File(directory, "textfile.txt");
FileInputStream fIn = new FileInputStream(file); InputStreamReader isr =
new InputStreamReader(fIn);
Lập trình Android – Module 1
18
3. CSDL SQLite trong ứng dụng Android
CSDL do một ứng dụng tạo ra sẽ chỉ được truy xuất bởi ứng
dụng đó, và file CSDL sẽ nằm trong bộ nhớ trong dành riêng cho
ứng dụng (/data/data/{package-name}/databases/)
Để sử dụng ta thực hiện:
Bước 1: Tạo một lớp kế thừa lớp SQLiteOpenHelper dùng để thao tác với cơ
sở dữ liệu. Trong đó ClassName là tên lớp.
Lập trình Android – Module 1
19
3. CSDL SQLite trong ứng dụng Android
Xây dựng phương thức thêm dữ liệu
Phương thức cập nhật dữ liệu
Lập trình Android – Module 1
20
3. CSDL SQLite trong ứng dụng Android
Phương thức xóa dữ liệu
Xây dựng phương thức truy vấn dữ liệu không có điều
kiện
Lập trình Android – Module 1
21
3. CSDL SQLite trong ứng dụng Android
Xây dựng phương thức truy vấn dữ liệu có điều kiện
public void methodName([parameter])
{
SQLiteDatabase db = this.getReadableDatabase();
String[] columns = {"column1", "colum2",…};
String selection = "column1 = ? …";
String []selectionArgs = {value1,…};
String groupBy = null; String having = null;
String orderBy = null;
Cursor c = db.query(tableName, columns, selection, selectionArgs, groupBy, having, orderBy);
if(c!=null)
{
c.moveToFirst();
//Về đầu danh sách
do {
Truy vấn dữ liệu sử dụng c.getString(columnIndex);
}
while(c.moveToNext()); } }
Lập trình Android – Module 1
22
3. CSDL SQLite trong ứng dụng Android
Bước 2: Sử dụng lớp đã tạo ở bước 1 trong activity
Lập trình Android – Module 1
23
Lập trình Android – Module 1
24