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
- Android基础数据存储下
- 【android基础】数据存储
- Android基础-数据存储
- Android下数据存储
- android之数据存储基础:
- Android基础:数据存储(一):文件存储
- Android数据存储:(内存储)基础
- android学习记录2(日志、上下文、android下数据存储、xml基础)
- android基础---使用文件进行数据存储
- android数据存储之SharedPreferences基础
- Android数据存储:(外存储)基础
- Android基础数据存储(上)
- Android核心基础(数据存储上篇)
- 【Android 基础】数据存储SharedPreferences 使用
- Android开发数据存储基础整理
- Android基础:数据存储(1)--SQLite
- 12、Android开发基础之数据存储
- Android基础_数据存储一_文件存储
- opnet之simple source进程模型
- Android面试题-最新
- C语言中.h和.c文件解析(很精彩)
- HashMap循环遍历方式及其性能对比
- 140. Word Break II
- Android基础数据存储下
- 全名k歌导出已发布的音乐方法
- 自定义注解并映射生成sql
- A、B两张表 获取过滤条件后A表中除了B表中剩余的数据
- system命令
- webview调用js注意事项
- 安卓基础之ListView
- 18个Java开源CMS系统一览
- 深入理解java虚拟机-读书笔记8-线程安全与锁优化