目录
I. Shared Preferences(共享首选项)
Shared Preferences是Android提供的一种轻量级的数据存储方式,用于存储少量的键值对数据
1.创建和获取Shared Preferences对象:
- 使用
getSharedPreferences()
方法获取Shared Preferences对象,可以指定名称和访问模式 - 示例代码:
SharedPreferences sharedPref = getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
2.保存数据:
- 使用
SharedPreferences.Editor
对象来写入数据,通过putXXX()
方法设置键值对。 - 调用
apply()
方法提交保存的数据。 - 示例代码:
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("key", value);
editor.apply();
3.读取数据:
- 使用Shared Preferences对象的
getXXX()
方法读取数据,可以指定默认值。 - 示例代码:
String value = sharedPref.getString("key", defaultValue);
II. 文件系统存储
Android提供了文件系统存储来保存应用程序的数据。
1.写入文件:
- 使用Java的文件操作类(如File、FileInputStream和FileOutputStream)来创建文件和写入数据。
- 示例代码:
String data = "Hello, Android!";
FileOutputStream outputStream;
try {
outputStream = openFileOutput("file.txt", Context.MODE_PRIVATE);
outputStream.write(data.getBytes());
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
2.读取文件:
- 使用文件输入流(FileInputStream)和相关类来读取文件内容。
- 示例代码:
FileInputStream inputStream;
try {
inputStream = openFileInput("file.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
inputStream.close();
String fileContents = stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
}
III. SQLite数据库
SQLite是Android内置的关系型数据库引擎,可以在应用程序中创建和管理数据库。
1.创建数据库:
- 创建一个继承自
SQLiteOpenHelper
的类,并重写onCreate()
方法,在其中执行创建表的SQL语句。 - 示例代码:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTableQuery = "CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT)";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 处理数据库版本升级
}
}
2.插入数据:
- 获取
SQLiteDatabase
对象,通过ContentValues
对象设置要插入的数据。 - 使用
insert()
方法将数据插入到数据库中。 - 示例代码:
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "John Doe");
long newRowId = db.insert("my_table", null, values);
3.查询数据:
- 使用
query()
方法查询数据库中的数据。 - 示例代码:
Cursor cursor = db.query("my_table", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
// 处理数据
} while (cursor.moveToNext());
}
cursor.close();
4.更新数据:
- 使用
update()
方法更新数据库中的数据。 - 示例代码:
ContentValues updatedValues = new ContentValues();
updatedValues.put("name", "Jane Smith");
String selection = "id=?";
String[] selectionArgs = {"1"};
int rowsAffected = db.update("my_table", updatedValues, selection, selectionArgs);
5.删除数据:
- 使用
delete()
方法从数据库中删除数据。 - 示例代码:
String selection = "id=?";
String[] selectionArgs = {"1"};
int rowsDeleted = db.delete("my_table", selection, selectionArgs);
Ⅳ.总结
- Android中的存储分为内部存储和外部存储,内部存储是应用私有的,外部存储需要权限才能访问。
- 内部存储可以通过
Context
的方法获取应用私有目录,使用FileOutputStream
和FileInputStream
进行读写操作。 - 外部存储可以通过
Environment.getExternalStorageDirectory()
获取,使用File
类进行文件操作。 - 数据库操作使用SQLite数据库,可以通过
SQLiteOpenHelper
创建和管理数据库,使用SQLiteDatabase
执行操作。 - 使用
Cursor
类遍历查询结果。 - Content Provider是一种跨应用共享数据的机制,可以让应用暴露自己的数据给其他应用访问,使用
ContentResolver
访问其他应用的Content Provider提供的数据。 - Room Persistence Library是建立在SQLite之上的对象映射库,简化了数据库操作,使用注解定义实体类和数据访问对象。
这些知识点涵盖了Android存储和数据库的基本概念和操作方式。进一步学习和实践可以加深对这些概念的理解和运用能力。