Android 数据处理方法
xml解析方式
由于设备资源比较宝贵,内存有限,需要适合的技术来解析xml文件提高访问速度。
1.dom解析
基于文档驱动的解析。通常需要加载整个文档并构成dom树之后才开始工作。由于dom树在内存中是持久的,因此可以在程序中对数据与结构做出更改。
优点:简单,直观适用于xml文件较小时。
缺点:构造层次结构,消耗资源大,不适合解析大文档。
2.sax解析
基于事件的解析器。工作原理就是对文档进行顺序扫描,当扫描到文档开始与结束,元素开始与结束等地方时,会通知事件处理函数做相应的动作。
优点:解析效率高,占用内存少。
缺点:需要自己负责tag的处理逻辑(如维护父/子关系等),使用麻烦。单向导航,很难同时访问同一文档中的不同部分数据,不支持xpath。
3.pull解析
基于事件的模式。在开始处完成大部分处理。需要自己获取自己产生的操事件,然后做相应的操作。当解析到一个文档结束时,将自动生成enddocument事件。可以应用于javase开发。
优先:小巧轻便,解析速度快,简单使用。
简述json数据的特点
是一种轻量级的数据交换格式,具有良好的额可读和便于快速编写的特性。可以在不同平台间进行数据交换。
json中有且只用两种结构:对象(使用花括号{}包围)和数组(使用方括号[]包围)。
1.对象:数据结构为:{key:value,key:value…}键值对结构。
key为对象的属性,value为对应的属性值,取值方法为对象key获取属性值。
2.数组:数据结构为[“java”,”js”,”vr”…],通过索引获取值。
如何解析json数据
//json数据 {"name":"张三","age":"18","married":"true"}//json1的json对象 [1,2,3]//json2的json数组
1.使用android内置的orh.json包解析
//解析json对象 jsonobject jsonobj = new jsonobject(json1); string name = jsonobj.optstring("name"); int age = jsonobj.optint("age"); boolean married = jsonobj.optboolean("married"); //解析json数组 jsonarray jsonarray = new jsonarray(json2); for(int i=0;i2.使用第三方gson解析
//解析json对象 gson gson =new gson(); person person = gson.fromjson(json1, person.class); //解析json数组 gson gson =new gson(); type listtype = new typetoken>(){}.gettype(); list ages = gson.fromjson(json2 , listtype);使用jsonreader解析json字符串
与xml解析中的pull方式有些类似。
在创建jsonreader对象时传递的参数是reader类型。在网络访问中,可以直接传递输入流,进而转化成reader;接着根据返回类型调用beginobject()或beginarray()方法用于开始读取对象或数组;然后调用hasnext()方法读取数据,读取完后需调用相应的endobject()或endarray()方法来关闭对象或数组;最后调用close()方法关闭reader。数据库">如何使用sql语句操作sqlite数据库
操作名称 | 运行语句 |
---|---|
增加 | insert into 表名(字段列表) valuses(值列表) |
删除 | delete from 表名 where 条件子句 |
修改 | update 表名 set 字段名 = 值 where 条件子句 |
查询 | select * from 表名 |
sqlite数据库中的表与表之间的关系有:
1.一对一
a表中的一行最多只能匹配b表中的一行。
2.一对多
a表中的一行可以匹配b表中的多行,但b表中的一行只能匹配a表中的一行。
3.多对多
a表中的一行可以匹配b表中的多行。要创建这种关系,需要定义第三个表,称为结合表。
如何使用sqlitedatabase操作sqlite数据库?
sqlitedatabase代表一个数据库对象,并提供一些操作数据库的方法。
方法名称 | 方法描述 |
---|---|
openorcreatedatabase(stringpath,sqlitedatabase.cursorfactory factory) | 打开或创建数据库 |
insert(string table, string nullcolumnhack, contentvalues values) | 添加一条记录 |
delete(string table, string whereclause, string[]whereargs) | 删除一条记录 |
query(string table, string[] columns, string selection, string[] selectionargs, string groupby, string having, string orderby) | 查询一条记录 |
update(string table, contentvalues values, string whereclause, string[] whereargs) | 修改记录 |
execsql(string sql) | 执行一条sql语句 |
close() | 关闭数据库 |
数据库事务的处理有助于程序的稳定性与效率。一个事务中的所有操作要么都执行成功,要么都执行失败,保证数据的移植性。
如何使用sqliteopenhelper创建数据库?
是sqlitedatabase的辅助类。主要生成一个数据库,并对数据库的版本进行管理。若指定的数据库不存在,则会调用sqlitedatabase.create()方法创建一个数据库。
方法名称 | 方法描述 |
---|---|
oncreate() | 创建数据库时调用,在该方法生成数据库 |
onupgrade() | 在数据库升级时调用,用于建立或删除数据表 |
onopen() | 当打开数据库时,一般不常用该方法 |
cursor游标的常用方法:
方法名称 | 方法描述 |
---|---|
getcount() | 获得总的数据条数 |
isfirst() | 判断是否为第一条记录 |
islast() | 判断是否为最后一条记录 |
movetofirst() | 移到第一条记录 |
movetolast() | 移到最后一条记录 |
move(int offset) | 移动到指定记录 |
movetonext() | 移动到下一条记录 |
movetoprevious() | 移动到上一条记录 |
getcolumnindexorthrow(string columnname) | 根据列名称获得列索引 |
getint(int columnindex) | 获得指定列索引的int类型值 |
getstring(int columnindex) | 获得指定列索引的string类型值 |
加密">常用的数据加密
1.base64
将数据转换成二进制数据。
比如客户端通过base64将图片转换成二进制数组(byte[]),再转换成string类型,然后以string的形式发送至服务器。若服务器以string形式将图片发送到客户端,则客户端需将string解析成二进制数据,再将二进制数组转换成图片。
2.aes加密与des加密
3.rsa加密
上一篇: 成功人士的时间管控:每天只睡“4个小时”
下一篇: 教你如何轻松做百度文库推广引流?
推荐阅读
-
C#简单生成随机密码的方法示例
-
MYSQL 优化常用方法
-
让CodeIgniter数据库缓存自动过期的处理的方法
-
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
-
Linux(Ubuntu)下mysql5.7.17安装配置方法图文教程
-
CodeIgniter启用缓存和清除缓存的方法
-
Spring源码分析——调试环境搭建(可能是最省事的构建方法)
-
c# winform窗口一直置顶显示在桌面最上方或最底层的方法
-
VS2015 Update2 构建 Android 程序问题汇总
-
mysql "too many connections" 错误 之 mysql解决方法