Android中的数据存储方案

Android中的数据存储方案有:

1. SharedPreferences 偏好设置:存储的数据存在K-V关系,数据量少,数据可能需要频繁的读写

多用于保存用户在使用软件时的个性化设置,本质是使用xml存储数据,文件将保存在 /data/data/应用程序包名/shared_prefs/ 文件夹下。
【写入数据流程】
1. 准备好需要写入的数据
2. 通过Context的getSharedPreference(String, int)获取SharedPreferences对象,参数1表示xml文件名,此处不需要指定扩展名,参数2表示文件的读写权限模式,取值为固定的Context.MODE_PRIVATE

                                //文件名,不要加后缀,系统会自动发的加入xml后缀
String name="lsw";
//mode默认为MODE_PRIVATE(私有化)
int mode=MODE_PRIVATE;
//getSharedPreferences
SharedPreferences sp=getSharedPreferences(name, mode);
3. 通过SharedPreferences对象的edit()方法,获取SharedPreferences.Editor对象

4. 通过Editor对象的put???()系列方法写入数据
5. 调用Editor对象的commit()方法提交,确认写入

                               //编辑器的声明
Editor editor=sp.edit();
//往编辑器中放入数据
editor.putString("edUsername", username);
//保存数据
editor.commit();
【读取数据流程】
1. 参考“写入”第2步,获取SharedPreferences对象
2. 通过SharedPreferences对象的get???()系列方法读取数据
3. 根据实际业务处理数据

        SharedPreferences sp=getSharedPreferences("lsw", MODE_PRIVATE);
        String defUsrname=sp.getString("edUsername", null);
        etUsername.setText(defUsrname);
【注意】
偏好设置属于APP的私有数据,在系统的“设置”中,可以被清除。

2. 文件存储 / IO存储


3. SQLite数据库

1)使用工具SQLite。

2)进行创建数据库声明

                String name="lsw.db";//这与sharedpreferences是不同的要自己添加后缀名
int mode=MODE_PRIVATE;
CursorFactory factory=null;//factory是默认为空
SQLiteDatabase db=openOrCreateDatabase(name, mode, factory);

3)创建一个表(Table)

String lsw="create table stu_score(" +
"ID integer primary key autoincrement," +
"username varchar(16) not null," +
"subject varchar(16) not null, " +
"score integer);" ;
                     db.execSQL(lsw);

4)添加数据(注意字符串用单引号括起来,不是双引号)

                 String lsw="insert into stu_score(" +
// "username,subject,score)values('jn','java',75);";

                    db.execSQL(lsw);

5)删除表项

String lsw ="delete from stu_score where id =1";
db.execSQL(lsw);

6)修改表项内容

updata 表名 set 重新赋值列表 where 条件

例如:String lsw =“update stu_score set subject='android' ,score=98 where id=1”;

          db.execSQL(lsw);

7)查询数据

(注意事项:在书写这些命令时,由于有些语句过长,需要换行,直接在原来的基础上回车就会自动补全引号和加好,还有注意一点,不同的命令符号之间在换行时,要注意空格的加入,以免系统解析时将上下号的命令符号连接在一起,而导致出错)

利用android中的API进行数据的添加,修改

1,添加:

 public void newInsert(SQLiteDatabase db){
            String table="stu_score";//已经创建好的表名
String nullColumnHack=null;//默认值为空个
ContentValues values=new ContentValues();
values.put("username", "lsw");//加入的如果是字符串要加入引号
values.put("subject", "c++");
values.put("score", 99);//数据无需加引号
//db.insert使用返回值得,如果是-1.则添加数据失败
long result = db.insert(table, nullColumnHack, values);
if(result == -1){
Toast.makeText(this, "添加数据失败", Toast.LENGTH_LONG).show();

}else{
Toast.makeText(this, "ID", Toast.LENGTH_LONG).show();
}
    }

2.删除

 public void newDelete(SQLiteDatabase db){
    String table="stu_score";
    //删除指定的名字,注意whereClause中写的内容要和whereArgs一一对应
// String whereClause = "username = ? or  username = ?";
// String[] whereArgs={"jn","lsw"};//数字也要用引号
    String whereClause = "id=3 ";
      String[] whereArgs=null;

long affect = db.delete(table, whereClause, whereArgs);
Toast.makeText(this, "受影响的行数"+affect, Toast.LENGTH_LONG).show();
}

3,更新数据

//有四个参数,用法参考添加和删除

 public void newUpdate(SQLiteDatabase db){
   
    String table="stu_score";
ContentValues values = new ContentValues();
String whereClause = "id = 4";
String[] whereArgs=null;
values.put("username", "jn");
db.update(table, values, whereClause, whereArgs);

    }
    

4. 网络存储

你可能感兴趣的:(Android中的数据存储方案)