随着我们学习的深入,这几天学习的内容越来越精彩了.作为应用开发,我们不可避免的得对数据进行操作.Android就为我们提供了很多种,存放数据和读
取数据的方法.在开发中,减少开发周期提高系统的健壮行.
今天我们就学习Android系统中使用对XML解析的技术Pull.和大大方便我们存
储和读取软件参数的类SharedPreferences.还有系统中提供的嵌入式关系型数据库SQLite的使用和相关操作.
1.使用Pull解析XML文件
这
个是Android系统中使用的方法.推荐使用.
1)读取使用到的
主要方法:
得到一个解析器:XmlPullParser parser = Xml.newPullParser();
传
进一个输入流:parser.setInput(inStream, "UTF-8");
得到事件类
型:parser.getEventType();
判断是否是文件结尾:XmlPullParser.END_DOCUMENT
判断是否
是文件开始:XmlPullParser.START_DOCUMENT:
判断是否是标签开始:XmlPullParser.START_TAG
判
断是否是标签结束:XmlPullParser.END_TAG
将指针往下推:parser.next();
2)写入使用到的主要方法:
初始化工具
类:XmlSerializer serializer = Xml.newSerializer();
传入输入
流:serializer.setOutput(writer);
对文档进行相关设
置:serializer.startDocument("UTF-8", true);
文档开
始:serializer.startTag("", "persons");
设置标签相关属
性:serializer.attribute("", "id", String.valueOf(person.getId()));
设置文
本信息:serializer.text(String.valueOf(person.getAge()));
设置标签结
束:serializer.endTag("", "age");
设置文档结束:serializer.endDocument();
2.使用SharedPreferences
进行数据存储
1)写出参数:
对工具类初始化:SharedPreferences sharedPreferences =
getSharedPreferences("itcast",Context.MODE_PRIVATE);
获取编辑器:Editor
editor = sharedPreferences.edit()
设置相关参数:editor.putString("name", "
传智播客 ");
提交修改:editor.commit();
2)读取参数:
String name =
sharedPreferences.getString("name", "");
总结:
--特别适合用于保存软件配置参数
--实际也是用xml文件存放数据
--文件存放在
/data/data/<package name>/shared_prefs 目录下
--不要忘记提交,否
则不生效.
--读取的时候,要主要在创建的时候是否给了读取的权限.
--如果 preference 中不存在该 key
,将返回缺省值
3.SQLite
数据库存储数据
1)SQLiteOpenHelper
通过继承这个类,复写下面两个方法对数据库进行版本的控制.
如果程序第一次执行,不存在数据库,执行这个方法创建数据库:onCreate()
如
果数据库存在或存在的数据库版本低于创建版本,执行这个方法更新数据库:onUpgrade()
将数据库以写入方式打开,如果满了,报
错:getWritableDatabase()
将数据库以读写方式打开,如果满了,只读:getReadableDatabase()
2)操作数据库
例如:
SQLiteDatabase
db = ....;
db.execSQL("insert into person(name, age) values(' 传智播客 ',
4)");
db.close();
-执行SQL语句,可以增删改:db.execSQL("insert into
person(name, age) values(?,?)", new Object[]{" 传智播客 ", 4});
-执行SQL语句,
可以进行查询:db.rawQuery("select * from person where name like ? and age=?",
new String[]{"% 传智 %", "4"});
-插入:db.insert(“person”, null, values);
-
删除:db.delete("person", "personid<?", new String[]{"2"});
-更
新:db.update("person", values, "personid=?", new String[]{"1"});
-查
询:db.query("person", new String[]{"personid,name,age"}, "name like ?",
new String[]{"% 传智 %"}, null, null,
"personid desc", "1,2");
3)事务操作
-开启事
物:db.beginTransaction();
-调用此方法会在执行到 endTransaction()
时提交当前事务,如果不调用此方法会回滚事务
-由事务的标志决定是提交事务,还是回滚事务:db.endTransaction()
总结:
--这个是嵌入式关系型数据库.
--什么类型存
什么数据都行,弱数据类型的数据库.
--定义为INTEGER PRIMARY KEY的字段只能存储64位整数
--在执行onUpgrade()
方法更新数据库时,要注意对原来数据的备份
--对数据库的操作是单用户的,所以推荐不关闭数据库,提高效率.