Android学习笔记(六)Android中的数据存储

本文详细介绍了Android中三种主要的数据存储方式:SharedPreferences用于简单键值对存储;内部存储通过openFileOutput和openFileInput进行读写操作;SQLite数据库则用于结构化数据的增删改查操作。示例代码包括了SharedPreferences的存取步骤,以及SQLite的基本数据库操作。
摘要由CSDN通过智能技术生成

Android中的数据存储

为了保存永久性的应用数据,Android 主要提供了以下几种数据存储方式?

  1. SharedPreferences
  2. 内部存储(Internal Storage)
  3. 外部存储(External Storage)
  4. SQLite数据库存储
  5. 网络存储

使用SharedPreference存储数据

SharedPreference介绍

SharedPreferences的API
getSharedPreferences:此方法用于获取SharedPreferences的+++对象
putxxx 方法:putxxx方法通过key-value对,将数据保存到XML文件中。。
commit 方法:对putXXX方法提供的数据进行保存。
getxxx 方法:通过SharedPreferences.getxxx的方法获取保存的key-value对的值
SharedPreferences保存数据的步骤

  1. 根据Context获取SharedPreferences对象mySP=getSharedpeferences(TABLE_NAME,
    Activity.MODE_PRIVATE);
  2. 利用edit()方法获取Editor对象 editor=mySP.edit();
  3. 通过Editor对象存储key-value键值对数据 editor.putString(“name”,”李鹏”);
  4. 通过commit()方法提交数据 editor.commit();
SharedPreference存储数据实例

文件存储在data\data\项目包名\shared prefs下,通过File Explorer可查看并导出
访问应用程序中的文件
先通过openFileOutput方法对文件进行写入,然后通过openFileInput方法对文件进行读取,并将文件内容显示到EditView组件中

使用文件存储数据

Android系统提供的能够简化读写流式文件过程的函数,主要用到的两个类和两种方法:
FileOutputStream
InputStream
openFileOutput(写入文件)
openFileInput(读文件)
文件存储在data\data\项目包名\files下,通过File Explorer可查看并导出

SD卡存储

对于大文件,可以把它存放在SDCard中。在操作SDCrad之前先要判断Sdcard的状态,只有在SdCard是可读写状态才能对其进行数据操作。
SDCard的状态通过**Environment.getExternalStorageState()**方法得到
如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
写入文件到SDCrad实例

  1. 先判断SDCard是否处于挂载并可写入状态
  2. 获取SDCrad路径,创建文件
  3. 通过FileOutputStream方法写入到SDCrad

使用SQLite数据库存储数据

SQLite数据库基本操作
SQLiteDatabase常用方法方法描述
openOrCreateDatabase (Stringpath,SQLiteDatabase.CursorFactory factory)打开或创建数据库
insert (String table,String nullColumnHack,Content Values values)添加一条记录
query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy,String having,String orderBy)查询一条记录
delete (String table,String whereClause,String[] whereArgs)删除一条记录
update (String table,ContentValues values,String whereClause,String[] whereArgs)修改记录
execSQL (String sql)执行一条SQL语句
close()关闭数据库
  • 创建和打开数据库
 SQLiteDatabase  db= openOrCreateDatabase("test.db",MODE_PRIVATE,null);
  • 创建表
String sql = "CREATE TABLE friend(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
"name VARCHAR(10) , " +
"phone VARCHAR(11) , " +
"category VARCHAR(4) )" ;
db.execSQL(sql);
  • 数据的添加
    1.使用insert方法
ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据cv.put("username","Jack");//添加用户名
cv.put("password",“123456"); //添加密码
db.insert("user",null,cv);//执行插入操作

2.使用execSQL方式来实现

String sql = "insert into user(username,password) values ('Jack',‘123456') ";//插入操作的SQL语句
db.execSQL(sql);//执行SQL语句
  • 数据的删除
    1.使用delete方法
String whereClause = "username=?";//删除的条件
String[] whereArgs = {"Jack"};//删除的条件参数
int rows=db.delete("user",whereClause,whereArgs);//执行删除

2.使用execSQL方式来实现

String sql = "delete from user where username='Jack '";//删除操作的SQL语句
db.execSQL(sql);//执行删除操作

  • 数据的修改
    1.使用update方法
ContentValues cv = new ContentValues();//实例化cv.put("password",“111111");//添加要更改的字段及内容
String whereClause = "username=?";//修改条件
String[] whereArgs = {"Jack"};//修改条件的参数
db.update("user",cv,whereClause,whereArgs);//执行修改

2.使用execSQL方式来实现

String sql = "update [user] set password = ‘111111' where username='Jack'";//修改的SQL语句
db.execSQL(sql);//执行修改

  • 数据的查询
    1.通过query()方法实现查询
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

table:表名称
colums:查询结果中包含的列名称数组
selection:条件子句,相当于where
selectionArgs:条件语句的参数数组
groupBy:分组
having:分组条件
orderBy:排序类
limit:分页查询的限制
Cursor:返回值,相当于结果集ResultSet

String table = "employee"; // 表名
String[] columns = { "email", "name", "salary", "tel" }; // 字段列表,如果查询所有字段的值,则可以为null
String whereClause = null; // where子句
String[] whereArgs = null; // whereClause参数中各?对应的值
String groupBy = null; // 用于使用了聚合函数后的结果分组
String having = null; // 用于使用了group by子句后的筛选
String orderBy = null; // 用于确定查询结果的排序方式,如果为null,表示默认排序
Cursor c = db.query(table, columns, whereClause, whereArgs, groupBy,having, orderBy);

2.通过rawQuery实现的带参数查询

Cursor c = db.rawQuery("select * from user where username=?",new Stirng[]{"Jack"});
if(cursor.moveToFirst()) {
    String password = c.getString(c.getColumnIndex("password"));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值