XUTils框架的学习(三)
前面两章说了xutils框架的引入和注解模块的使用和数据库模块的使用,想了解的朋友可以去看看。
前面在说数据库模块的操作的时候是手动创建数据库并保存在asset文件夹里面,再通过I/O将数据库写进应用里面,这种操作存在的弊端是数据库升级比如在表里面增加字段,或者更改表的字段名称,这时候就不得不删除原来的数据库再创建新的数据库,在新的数据库里面存储用户数据了,这是强烈不允许的,由于这个操作挖下的坑使笔者在项目进行版本迭代的时候忙得焦头烂额,于是就使用了第二种方法。
自动创建数据库并通过更改数据库的版本号对数据库进行升级
一 在openDb的时候进行以下操作:
private DbUtils UserInfoUtils; DbUtils.DaoConfig config = new DbUtils.DaoConfig(mContext);
config.setDbName("USER_INFO.db");//数据库名称
config.setDbVersion(1);//数据库版本
config.setDbDir(ApplicationConstans.getLocalDefaultPath());//数据库保存的位置
userInfoDbUtils = DbUtils.create(config);
userInfoDbUtils.createTableIfNotExist(User.class);
我们可以在config下面的方法做许多事情,比如数据库的存储位置,版本号,数据库名称的创建等。
前面的UserInfo实体对象还是不变。
在使用的时候直接这样就可以了。
UserInfo user = new UserInfo();
user.setUserName("Bob");
user.setPassword("111112221");
LoginService.getInstance(mContext).saveUser(user);
上面是数据库里面保存的数据。
二 数据库版本更新
① 首先将openDb的方法里面将版本号改为2
config.setDbVersion(2);
② 然后将表里面增加或修改的字段名称写进UserInfo对象里面就可以了。这样就完成了数据库版本更新的操作了。
下面是UserInfo的更改后的代码:
/**
* Created by Bob on 2016/6/14.
*/
@Table(name = "UserDB")
public class User { @Column(column = "id")
private int id; @Column(column = "user_name")
private String userName; @Column(column = "password")
private String password; @Column(column = "describe")
private String describe; @Column(column = "department")
private String department; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getDescribe() {
return describe;
} public void setDescribe(String describe) {
this.describe = describe;
} public String getDepartment() {
return department;
} public void setDepartment(String department) {
this.department = department;
}
}
我增加了describe和department的字段
下面是更新后数据库里面存储的数据
其次,在进行数据插入的时候进行了一点小小的优化,就是如果数据库里面的已经存在该数据,然后再去比对数据是否是新数据如果是新数据就删除原来的数据,保存新数据。(这里有一点小的纰漏,就是有个数据的更新操作,但是我不知道怎么用,如果大家知道怎么用的话,麻烦告诉一声。)
public void saveUser(User user){
User pUser = getUserInfoByName(user.getUserName());
try{
if(null == pUser){
dbUtils.save(user);
}else if(!pUser.getPassword().equals(user.getPassword())){//如果数据库里面的用户密码和传进来的用户的用户密码不一样的话就删除原来的数据保存新数据,这是一个权宜之计,因为以前学数据库的时候记得有个更新数据的操作,但是忘记了怎么用了。
deleteUser(pUser);
dbUtils.save(user);
}
}catch (DbException e){
e.printStackTrace();
}
} public void deleteUser(User user){//删除用户数据
try{
dbUtils.delete(user);
}catch (DbException e){
e.printStackTrace();
}
}
XUTils框架的学习(三)的更多相关文章
- xUTils框架的学习(二)
这章讲的是框架的DbUtils模块的学习 三 xUtils框架的DButils模块 最开始接触这个框架就是从数据库模块开始的.当时的需求是需要记录用户的登录数据,保存在本地以便进行离线登录.首先想到的 ...
- XUtils框架的学习(一)
一 xutils框架引入到AndroidStudio工程,最简单的方法:① 在APP的build.gradle里面加入 compile 'org.xutils:xutils:3.3.36'.② 一定 ...
- (转)MyBatis框架的学习(三)——Dao层开发方法
http://blog.csdn.net/yerenyuan_pku/article/details/71700957 使用MyBatis开发Dao层,通常有两个方法,即原始Dao开发方法和Mappe ...
- xUtils框架介绍(三)
接上回,继续介绍xUtils的最后两个模块:DbUtils和HttpUtils.首先先介绍第一个SQLite数据库操纵的简单ORM框架,只要能理解xUtils为我们提供的api,相信你也能熟练的把Db ...
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
- 精通ASP.Net MVC 3 框架(第三版)学习笔记
精通ASP.Net MVC 3 框架(第三版)学习笔记 代码才是王道. http://pan.baidu.com/s/1pJyL1cn
- Struts2框架学习(三) 数据处理
Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...
- 【STM32H7教程】第12章 STM32H7的HAL库框架设计学习
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第12章 STM32H7的HAL库框架设计学 ...
- [ZZ] 深度学习三巨头之一来清华演讲了,你只需要知道这7点
深度学习三巨头之一来清华演讲了,你只需要知道这7点 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun还提到了一项FAIR开发的,用于 ...
随机推荐
- MSSQL的sysprocesses
包含正在 SQL Server 实例上运行的进程的相关信息. 这些进程可以是客户端进程或系统进程. 若要访问 sysprocesses,您必须位于 master 数据库上下文中, 或者必须 ...
- Objective-C 中的方法回掉
Objective-C 中的方法回掉 Objective-C 中的方法调用 OC 类似C+,避免不了的内部的各种通信手段,函数调用,变量传递等,避免不了各种回掉等. 一.class直接调用 或者 o ...
- 项目报错-无法解析类型 XXXX.xx 从必需的 .class 文件间接引用了它
这个编译错误有几个原因 1.jdk版本问题 要是报错是某些java包里的东西那就可以肯定是jdk版本的问题, 比如无法解析类型java.lang.Object,无法解析类型java.lang.Char ...
- Java实战之01Struts2-01简介及环境搭建
一.Struts2简介 1.Struts2概述 Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. 2.Struts2的来历 Struts1:也是apache开发的一 ...
- IIS原理学习
IIS 原理学习 首先声明以下内容是我在网上搜索后整理的,在此只是进行记录,以备往后查阅只用. IIS 5.x介绍 IIS 5.x一个显著的特征就是Web Server和真正的ASP.NET Appl ...
- Scala - 正则表达式匹配例子
壹Try胜仟言 别忘了 import scala.util.matching._ scala> var s = "a_b_c_d_e"s: String = a_b_c_d_ ...
- css中 中文字体(font-family)的标准英文名称
Mac OS的一些: 华文细黑:STHeiti Light [STXihei] 华文黑体:STHeiti 华文楷体:STKaiti 华文宋体:STSong 华文仿宋:STFangsong 儷黑 Pro ...
- mysql扩展库操作mysql数据库
环境搭建 启用mysql扩展库,在php.ini文件中去配置mysql扩展库 extension=php_mysql.dll 查询数据库 1.建库建表 //建库testcreate database ...
- node 无解回调 有解了
http://cssor.com/javascript-workflow-by-tofishes.html
- facebook快速登录常见错误:后台设置、域名权限、开发模式、公开、沙盒
开发人员登录地址 : https://developers.facebook.com/?ref=pf 官方登录API文档地址 : https://developers.facebook.com/do ...