Android基础数据存储下

来源:互联网 发布:牙周医生 知乎 编辑:程序博客网 时间:2024/06/03 21:43

SharedPreference

SharedPreference的基本操作代码

使用步骤:1. 获取到 sp = this.getSharedPreferences("config", 0);2. 获取编辑器 Editor editor = sp.edit();3. 写入数据 editor.putString(key,value)    putInt()  putDouble()4. 提交数据 editor.commit();5. 获取数据 sp.getString(key,dafvalue); sp.getInt()...

注意事项:SharedPreference保存在data/data/<包名称>/…

XML的序列化和XML解析

常用解析方法有:

  • sax:只能读,不能修改,只能顺序读取,适合对大数据的xml解析,解析速度快,不需要全部加载到内存中;
  • dom:能读,能修改,而且可以实现随机读取,解析速度慢,适合小型数据的xml解析,需要全部加载到内存中;
  • pull解析(我们需要掌握的): 灵活,简单,顺序读取,能够根据逻辑判断随时停止解析

XML的解析

使用步骤:

1.获取到一个xml解析器

XmlPullParser pullParser = XML.newPullParser();

2.设置解析器的初始化参数

1.定义需要解析的文件地址File file = new File(getFilesDir(), 名称 + ".xml");2.初始化输入流FileInputStream input = new FileInputStream(file);3.把IO流设置到解析器对象里pullParser.setInput(input,"utf-8");

3.解析xml文件

1.获取第一个事件的标识int type = pullParser.getEventType();2.判断是否是结尾节点type==XmlPullParser.END_DOCUMENT  3.判断是否是标签开始节点type==XmlPullParser.START_TAG  4.获取当前节点名称pullParser.getName();5.获取节点中的值pullParser.nextText();6.判断是否是结束节点type == XmlPullParser.END_TAG  7.让解析器获取下一个事件的标识pullParser.next();

XML的序列化

使用步骤:

1.得到XML序列化器对象

XmlSerializer xs = Xml.newSerializer();

2.制定序列化器的一些参数

1.保存文件的地址File file = new File(getFilesDir(), 名称 + ".xml");2.初始化输入流FileOutputStream os = new FileOutputStream(file);3.把IO流设置到序列化器对象里xs.setOutput(os, "utf-8");

3.写xml文件

写开头 -->xs.startDocument("utf-8", true);写开始标签 -->xs.startTag(null, "label");写文本 -->xs.text(value);写结束标签 -->xs.endTag(null,"label");...写结尾 -->sx.endDocument();

4.关闭IO流

os.close();

数据库

SQLite是一款内置到移动设备上的轻量级的数据库,遵守ACID(原子性、一致性、隔离线、持久性)的关联式数据管理系统,多用于嵌入式系统中。Android系统内置了SQLite数据库,并提供了一系列的API方便对其操作。

使用SQLiteOpenHelper创建数据库

SQLiteOpenHelper 是Android 提供的一个抽象工具类,负责管理数据库的创建、升级工作。如果我们想创建数据库,就需要自定义一个类继承SQLiteOpenHelper,然后覆写其中的抽象方法。

代码

#简单的学生管理系统

第一步 页面布局

第二步 创建一个类来创建数据库 创建表

使用一个类 继承SQLiteOpenHelper
重写方法
StudentDBOpenHelper()创建数据库 super(context, “info.db”, null, 1);
onCreate()创建表 db.execSQL(“create table student (_id integer primary key autoincrement,name varchar(20), sex varchar(6))”);

第三步 创建一个StudentDao类来实现增删改查的逻辑

1.创建一个有参构造 传入上下文  构造里创建StudentDBOpenHelper类对象 2.创建增删改查的方法    首先都是获取SQLiteDatabase  db =helper.getWritableDatabase()对象    a 增db.execSQL("insert into student (name,sex) values (?,?)",new Object[]{name,sex});    b 删db.execSQL("delete from student where name=?",new Object[]{name});    c 改db.execSQL("update student set sex =? where name=?",new Object[]{newsex,name});    d查 获得游标集Cursor cursor = db.rawQuery("select sex from student where name=?",new String[]{name});        再去判断是否有下一行,获取这一行sex的信息 cursor.close();返回String    e 查询所有 创建一个list集合 使用while循环来 获取所有信息把每个信息存到student对象中 在把student存到list集合中        返回list集合最后都是释放资源db.close;

第四步 创建学生类

第五步 在MainActivity中初始化控件以及数据库dao业务逻辑类

1关心控件 找到布局下方的线性布局  创建StudentDao对象2做保存信息到数据库的逻辑    获取你输入的信息 使用StudentDao对象的增的方法  把数据添加到数据库3 定义一个方法 把所有的学生信息都显示到界面上    使用查询所有的方法得到集合 再把原有显示的数据清除,避免数据的重复显示方法ll_result.removeAllViews(); 循环集合 把所有的数据装到TextView对象中在 线性布局中显示出来

这样做有一个问题 就是当我们数据库中的信息太多的时候 会同时new出很多个textview 会造成内存溢出 所以我们需要使用listview控件

数据库的升级和事务

1.数据库的升级

在创建MySQLiteOpenHelper 对象的时候需要传递一个int 类型的version 参数,代表数据库的版本号,数值从1 开始。如果在new MySQLiteOpenHelper 对象的时候传递的version 大于先去创建的version,那就会导致系统回调onUpgrade 方法,从而实现了数据库的升级。

2.数据库的事物

SQLiteDatabase 提供了对事务的支持,处于事务中的操作都是“临时性”的,只有事务提交了才会将数据保存到数据库。事务的使用不仅可以保证数据的一致性,也可以提高批处理时的执行效率。SQLiteDatabase 提供的beginTransaction()打开事务,endTransaction()结束事务。注意:结束事务并不代表事务提交,如果想让数据写入数据库需要在结束事务前执行setTransactionSuccessful()方法。这是事务提交的唯一方式。

Sqlite3工具的使用

sqlite3 是Android 内置的操作数据库工具,使用该工具可以直接对SQLite 数据库进行操作。

操作步骤:1、在命令行界面使用adb shell 命令进入linux 内核2、使用cd 命令进入数据库所在目录(数据库的路径为”/data/data/应用包名/databases/数据库”)3、使用”sqlite3 数据库名”进入数据库操作模式
0 0
原创粉丝点击