数据存储5种方式
1. 1. File 文件存储
2. 2. SQLite 数据库
3. 3. ContentProvider 内容提供者
4. 4. 网络 存储在服务器上
5. 5. SharedPreferences XML存储
SharedPreferences
1. 以XML方式 存储的 键值对。用于存储一些小型字段,第一次登录?配置 白天模式 夜间模式,
是否记住密码,自动登录。
2. 只能存储5种基本数据类型。
1. 存储的文件 位于 data/data/包名/sharePrefs/保存的名称.xml
1. 1. 任何的获取都需要打开一个sp的文件,如果文件存在,存储的时候自动生成,读取的时候使
用默认值。
2. 2. 存储使用Editor内部类来操作,putXXX5种方式,最后一定需要调用commit来提交。
3. 3. 清空的时候也可以使用Editor的clear来清空所有的键值对,最后也要提交。
4. 4. 获取数据的时候直接使用sp的getXXX的方法来获取值,并且需要给定一个默认值,在没有
文件或者没有key的时候使用。
File存储
内部系统位置存储 存储小文件
1. 也是存储在 data/data/报名/files/保存的文件名
2. 1. 打开输入输出流 openFileInput(name) openFileOutput(name,覆盖/追加);
3. 2. 流进行读取或者写入。
外部存储器 SD卡 USB存储
1. 和java的方式 完全相同。
Environment
1. //获取SD卡当前的状态
2. if
(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED
)) {
3. //表明SD卡可以读写
4. //读写SD卡必须要权限
5. }
6. SD卡在默认的情况下是可以读取,但是写一定需要权限。
7. Bitmap,BitmapFactory必须要获取读写权限才能读取。
8.
9. //获取SD卡的根目录
10. String absolutePath =
Environment.getExternalStorageDirectory().getAbsolutePath();
SQLiteDatabase 轻量级数据库
1. 数据库默认位于/data/data//databases
2.
3. 1. 创建数据库
4. 2. 打开数据库
5. 3. 创建表
6. 4. 操作数据(记录)
7. 5. 关闭数据库
5条数据库的指令
1. 1. 创建一张表 一般来说,一个表对应一个类,一条记录对应一个对象。
2. create table TABLE_NAME(字段 类型 约束,…);
3. 类型: int –> integer
4. double–> double
5. text varchar –> String
6. boolean(0,1) –> boolean
7.
8. 约束: primary key 主键约束 非空 绝对不能相同 (如果是int 自动增长 auto_in
crement)
9. not null 非空约束 不允许不设置。
10.
11.
12. 2. 删除一张表
13. drop table TABLE_NAME
14.
15.
16. 3. 插入数据
17. insert into TABLE_NAME (需要插入的字段) values (值);
18. 4. 删除数据
19. delete TABLE_NAME where _id=5 or ||(and &&) _username = 张三
20. 5. 修改数据
21. update TABLE_NAME set 字段=值,字段=值。。。 where 条件
22. 6. 查询数据
23. select * from TABLE_NAME where 条件
SQLiteOpenHelper
1. 所有的数据库的操作 都是通过SQLiteOpenHelper这个帮助类来完成的。
2. 1. 创建数据库
3. 2. 打开数据库
4. 3. 创建表
5. 4. 获取数据库的实例。
6. 5. 通过实例来对记录进行增删改查
1. 在构造方法中,指定一个数据库的名称,如果数据库存在,那么直接打开,如果不存在,创建新
的数据库。
2. public MyOpenHelper(Context context) {
3. super(context, 数据库的名称, 游标工厂默认null, 当前数据库的版本号);
4. }
1. onCreate
2. 在第一次打开数据库的时候,会执行onCreate方法来 创建一张表(需要自己来实现),第二次
打开不会再执行该方法
1. onUpgrad
2. 在数据库的版本号往上更新的时候,会执行该方法
3.
4. //将数据复制出来
5. //删除表
6. //重建表
7. //将数据移过去
SQLiteDatabase
1. //在一般的 情况下 是完全相同的
2. //只有在磁盘空间已满的情况下 不同,readable 不会抛出异常,只是插入失败, writable
抛出异常。
3. SQLiteDatabase readableDatabase = helper.getReadableDatabase();
4. SQLiteDatabase writableDatabase = helper.getWritableDatabase();
数据库操作
1. 可以直接操作一条sql语句
2. execSQL();
3. 同时也可以使用以封装好的4个方法
4. 1. 添加成功的id = insert(TABLE_NAME,null,ContentValues);
5. ContentValues是以键值对的方式来存储数据,键是在表的字段,values是需要插入的
记录的值。
6.
7. 2. int 受影响的行 = delete(MyOpenHelper.TABLE_USER, “条件 id=? and 字段=
?”, new String[]{“占位符的值”,”…”});
8.
9.
10. 3. int 受影响的行 = update(MyOpenHelper.TABLE_USER, values, where, wher
eArgs);
11. values同insert方法
12.
13. 4. Cursor cursor = query(MyOpenHelper.TABLE_USER, null, where, whereA
rgs, null, null, null);
14. while (query.moveToNext())//是否有下一条 hasNext
15. {
16. //next
17. //query.getColumnIndex(MyOpenHelper.ID)当前字段在 数据库表中的
位置
18. int id = query.getInt(query.getColumnIndex(MyOpenHelper.ID)
);//需要获取字段的位置
19. String username = query.getString(query.getColumnIndex(MyOp
enHelper.USERNAME));
20. String password = query.getString(query.getColumnIndex(MyOp
enHelper.PASSWORD));
21. int age = query.getInt(query.getColumnIndex(MyOpenHelper.AG
E));
22. User user = new User(username, password, age);
23. user.id = id;
24. }
数据存储
最新推荐文章于 2018-03-20 20:10:32 发布