首页 > 学院 > 开发设计 > 正文

(第一行代码)笔记(四)

2019-11-09 15:26:13
字体:
来源:转载
供稿:网友

数据存储全方案


持久化技术简介 Android系统中主要提供了三种方式用于简单的实现数据持久化功能

文件存储SharedPReference存储数据库存储

1.文件存储 将数据存储到文件中

Context类下有openFileOutput方法,将数据存储到指定文件中,第一个参数指定文件名,不可以包含路径,所有的文件都是默认存储到/data/data/<package name>/files/目录。第二个参数是文件操作模式,MODE_PRIVATEMODE_APPEND

openFileOutput方法返回一个FileOutputStream对象。

String data = "Data to save";FileOutputStream out = null;BufferedWriter writer = null;try{ out = openFileOutput("data", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(data);}catch(IOException e){ e.printStackTrace();}finally{ try{ if(writer != null){ writer.close(); } }catch(IOException e){ e.printStackTrace(); }}

2.SharedPreferences存储 键值对存储

三种方法获取SharedPreferences对象 1.Context类中的getSharedPreferences()方法,两个参数,第一个指定文件名,SharedPreferences文件都是存放在/data/data/<package name>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATEMODE_MULTI_PROCESSMODE_PRIVATE 仍然是默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。MODE_MULTI_PROCESS则一般是用于会有多个线程中对同一个SharedPreferences文件进行读写的情况。 2.Activity类中的getPreferences() 方法类名作为SharedPreferences的文件名 3.PreferenceManager类中的getDefaultSharedPreferences() 方法它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。

存数据三步 1.调用SharedPreferences对象的edit() 方法来获取一个SharedPreferences.Editor对象。 2.向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean 方法,添加一个字符串则使用putString() 方法,以此类推。 3.调用commit()方法将添加的数据提交,从而完成数据存储操作。

从SharedPreferences读数据getXXX方法,通过键值。

3.SQLite数据库存储

SQLiteOpenHelper抽象类,onCreateonUpgrade两个方法必须在子类中重写。在这两个方法中实现 创建升级 数据库的逻辑。

geReadableDatabasegetWritableDatabase

创建或打开一个数据库,并返回一个可对数据库进行读写的对象,磁盘空间已满则,read方法返回只读,write出现异常。

SQLiteOpenHelper中有两个构造方法可供重写,一般使用参数少一点的那个构造方法即可。这个构造方法中接收四个参数:第一个参数是Context。必须要有它才能对数据库进行操作;第二个参数是数据库名,创建数据库时使用的就是这里指定的名称;第三个参数允许我们在查询数据的时候返回一个自定义的Cursor,一般都是传null;第四个参数表示当前数据库的版本号,可用于对数据库进行升级操作,构建出SQLiteOpenHelper的实例之后,再调用它的getReadableDatabase()getWritableDatabase() 方法就能够创建数据库了,数据库文件会存放在/data/data/<package name>/databases/ 目录下。

SQLite中的数据类型

integer 表示整型real 表示浮点型text 表示文本类型blob 表示二进制类型通过adb检查数据库和表的情况adb shellcd 命令进入到/data/data/<package name>/databased/目录下,并使用ls 命令查看到该目录里的文件sqlite3 数据库名.table 查看表.schema 查看建表语句.exit 或 quit 退出数据库的编辑。db.execSQL("drop table if exists xxx");onCreate(db);

版本号大于1。onUpgrade方法就会执行。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表