安卓数据存储宝典:SharedPreferences、SQLite 数据库、文件系统
在Android中,以下是三种常见的数据存储方式:
- SharedPreferences:适用于存储简单的键值对数据,通常用于配置信息等。
// 存储数据
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value");
editor.apply();
// 读取数据
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
String value = sharedPreferences.getString("key", "default");
- SQLite数据库:适用于存储大量数据,具有查询语句功能。
// 创建数据库
SQLiteOpenHelper dbHelper = new SQLiteOpenHelper(context, "MyDatabase.db", null, 1) {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE MyTable (_id INTEGER PRIMARY KEY, value TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 更新数据库
}
};
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 插入数据
ContentValues values = new ContentValues();
values.put("value", "some value");
db.insert("MyTable", null, values);
// 查询数据
Cursor cursor = db.query("MyTable", new String[]{"_id", "value"}, "value = ?", new String[]{"some value"}, null, null, null);
if(cursor.moveToFirst()) {
int columnIndex = cursor.getColumnIndex("value");
String value = cursor.getString(columnIndex);
}
cursor.close();
// 更新数据
ContentValues values = new ContentValues();
values.put("value", "new value");
db.update("MyTable", values, "value = ?", new String[]{"some value"});
// 删除数据
db.delete("MyTable", "value = ?", new String[]{"some value"});
// 关闭数据库
db.close();
- 文件系统:适用于存储大型文件或二进制数据。
// 写入数据到文件
FileOutputStream outputStream = openFileOutput("my_file.txt", MODE_PRIVATE);
outputStream.write("Hello, world!".getBytes());
outputStream.close();
// 读取数据从文件
FileInputStream inputStream = openFileInput("my_file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
inputStream.close();
String fileContents = stringBuilder.toString();
这三种方式各有优缺点,根据实际需求选择合适的数据存储方式。
评论已关闭