- 浏览: 59477 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (218)
- ★★★ Android ★★★ (37)
- 【 Java 基础】✚ (0)
- ☞Java 基础概述 (0)
- ☞Java 基本语法 (0)
- ☞Java 面向对象编程 (0)
- ☞Java多线程 (0)
- ☞Java 异常处理 (0)
- ☞Java 集合框架 (0)
- ☞Java 泛型 (0)
- ☞Java 枚举和注解 (0)
- ☞Java IO流 (0)
- ☞Java 常用类 (0)
- ☞Java GUI键盘事件 (0)
- ☞Java 网络编程 (0)
- ☞Java 正则表达式 (0)
- ☞Java 反射机制 (0)
- ☞Java 小项目 (0)
- ☞Java 面试/笔试题 (0)
- 【HTML5 开发基础】✚ (0)
- ☞HTML常用标签 (0)
- ☞HTML 新特性 (0)
- ☞CSS/CSS3常用语法 (0)
- ☞JavaScript基础语法 (0)
- ☞HTML5 小项目 (0)
- ☞HTML5 面试/笔试题 (0)
- 【Android 基础阶段】✚ (12)
- ☞Android 快速入门 (1)
- ☞Android 核心组件 (1)
- ☞Android Intent (0)
- ☞Android 用户界面 (5)
- ☞Android 数据存储 (0)
- ☞Android Tomcat服务器 (0)
- ☞Android 网络编程 (2)
- ☞Android 消息机制 (0)
- ☞Android 事件机制 (0)
- ☞Fragment和ViewPager (3)
- ☞Android动画与图形处理 (0)
- ☞Android多媒体应用开发 (1)
- ☞Android 传感器开发等 (0)
- ☞Android GPS应用 (0)
- ☞Android C语言 (0)
- ☞Android JNI/NDK开发 (0)
- ☞Android Git/SVN (0)
- ☞Android 小项目 (0)
- ☞Android 面试/笔试题 (0)
- 【Android 微知识点】✚ (7)
- ☞Android 一些模版代码 (0)
- ☞Android 模块功能代码 (0)
- ☞Android UI控件大全 (2)
- ☞Android 自定义适配器 (1)
- ☞Android 自定义属性 (3)
- ☞Android 自定义动画 (0)
- ☞Android 启动过程 (0)
- ☞Android 性能优化 (0)
- ☞Android 图片三级缓存 (0)
- ☞Android 屏幕适配 (0)
- ☞Android OOM内存溢出 (0)
- ☞Android 权限 (0)
- ☞Android JNI (0)
- 【Android 网络编程】✚ (1)
- ☞Android Json解析 (2)
- ☞Android 网络请求 (2)
- 【Android 解析器】✚ (0)
- ☞Android XML (0)
- ☞Android DOM (0)
- ☞Android dom4j (0)
- ● (0)
- ●● (0)
- ●●● (0)
- ●●●● (0)
- ●●●●● (0)
- ●●●●●● (0)
- ●●●●●●● (0)
- ●●●●●●●● (0)
- ●●●●●●●●● (0)
- ☞☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞ (0)
- ☞☞☞☞☞ (0)
- ☞☞☞☞ (0)
- ☞☞☞ (0)
- ☞☞ (0)
- ☞ (0)
- 【Android重量级框架】✚ (14)
- ☞框架归类 (1)
- ☞Gson (0)
- ☞xUtils3 (2)
- ☞xListView (0)
- ★ Volley (0)
- ★ AndroidAnnotations (0)
- ★ Glide (0)
- ★ SlidingMenu (0)
- ★ TabLayout (1)
- ★ ViewPagerIndicator (4)
- ★ Pulltorefresh (1)
- ★ PhotoView (1)
- ★ EventBus (0)
- ★ Vitamio5.0 (0)
- ★ Image-Loader (1)
- ★ Android-gif-drawable (0)
- ★ ActionBar (0)
- ★ ActionBarSherlock (0)
- ★ OkHttp (0)
- ★ Afinal (2)
- ★ Ffmpeg (0)
- ★ RxJava (0)
- ★ Picasso (0)
- ★ FastJson (0)
- ★ Toolbar (0)
- ★ GreenDao (0)
- ★ Otto (0)
- ★ ORMLite (0)
- ★ Retrofit (0)
- ★ Fresco (0)
- ★ SnappyDB (0)
- ★ Butterknife (0)
- ★ PagerSlidingTabStrip (0)
- PinterestLikeAdapterView (0)
- ★ NotBoringActionBar (0)
- ★ StickyListHeaders (0)
- ★ NineOldAndroids (0)
- ★ Expandablelistview (0)
- ★ SwipeRefreshLayout (0)
- ★ SwipeMenuListView (0)
- ★ (0)
- ★★ (0)
- ★★★ (0)
- ★★★★ (0)
- ★★★★★ (0)
- ★★★★★★ (0)
- ★★★★★★★ (0)
- ★★★★★★★★ (0)
- ★★★★★★★★★ (0)
- ★★★★★★★★★★ (0)
- ❉❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉ (0)
- ❉❉❉❉❉ (0)
- ❉❉❉❉ (0)
- ❉❉❉ (0)
- ❉❉ (0)
- ❉ (0)
- 【第三方分享库】✚ (0)
- ○○○○○○○○○○ (0)
- ○○○○○○○○○ (0)
- ○○○○○○○○ (0)
- ○○○○○○○ (0)
- ○○○○○○ (0)
- ○○○○○ (0)
- ○○○○ (0)
- ○○○ (0)
- ○○ (0)
- ○ (1)
- 【Android开源项目】✚ (1)
- ☞综合性项目 (0)
- ☞多媒体项目 (1)
- ☞新闻性项目 (2)
- ☞社交性项目 (0)
- ☞商城性项目 (0)
- ☞Android 支付宝 (0)
- ☞Android 第三方登录 (0)
- ☞Android 语音识别 (0)
- ☞Android消息推送 (1)
- ☞Android 蓝牙 (0)
- ☞Android 传感器 (0)
- ☞Android 动画 (0)
- ☞Android 省市县三级联动 (0)
- ☞短信验证技术 (0)
- ☞二维码扫描技术 (0)
- ☂ (0)
- ☂☂ (0)
- ☂☂☂ (0)
- ☂☂☂☂ (0)
- ☂☂☂☂☂ (0)
- ☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂☂ (0)
- ♣♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣ (0)
- ♣♣♣♣♣ (0)
- ♣♣♣♣ (0)
- ♣♣♣ (0)
- ♣♣ (0)
- ♣ (0)
- 【Android源码分析】✚ (4)
- 【Android项目阶段】✚ (1)
- ☞Android主流架构搭建 (0)
- ☞综合性<手机安全卫士> (0)
- ☞多媒体<手机影音> (1)
- ☞新闻性<北京新闻> (0)
- ☞社交性<硅谷社交> (0)
- ☞商城性<硅谷商城> (0)
- ☞内涵段子<百思> (0)
- ☞<地图相关开发接口> (0)
- ☞下载<电子应用市场> (0)
- ☞智能<手机遥控家电> (0)
- ☞游戏<植物大战僵尸> (0)
- ☞企业实战<开源中国> (0)
- ☞Android5.0+6.0新特性 (0)
- ☞高级特效专辑 (0)
- ☞项目管理与实施 (0)
- ☞项目经验:面试/笔试题 (0)
- 【Android 前沿技术】✚ (0)
- ☞图文混排技术 (0)
- ☞百分比布局 (0)
- H5混合开发☞ (0)
- ☞APP增量升级 (0)
- ☞软件崩溃收集 (0)
- ☞前沿技术分享 (0)
- 【Android+H5混合开发】✚ (0)
- ☞React基本语法 (0)
- ☞React Native开发环境搭建 (0)
- ☞React Native开发基础 (0)
- ☞React Native常用组件 (0)
- ☞React Native常用API (0)
- ☞豆瓣搜索项目 (0)
- ☏ (0)
- ☏☏ (0)
- ☏☏☏ (0)
- ☏☏☏☏ (0)
- ☏☏☏☏☏ (0)
- ☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏☏ (0)
- ☎☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎ (0)
- ☎☎☎☎☎ (0)
- ☎☎☎ (0)
- ☎☎ (0)
- ☎ (0)
- 【Android+H5项目实战】✚ (0)
- 【程序员软件系列】✚ (4)
- ☞Eclipse (0)
- ☞Android Studio (4)
- ☞Genymotion (0)
- ☞Tomcat服务器 (0)
- ☞MyScal (0)
- ☀ (0)
- ☀☀ (0)
- ☀☀☀ (0)
- ☀☀☀☀ (0)
- ☀☀☀☀☀ (0)
- ☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀☀ (0)
- ☻☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻ (0)
- ☻☻☻☻☻ (0)
- ☻☻☻☻ (0)
- ☻☻☻ (0)
- ☻☻ (0)
- ☻ (0)
- ♬♬♬ 技术网站 ♬♬♬ (2)
- ◙ (0)
- ◙◙ (0)
- ◙◙◙ (0)
- ◙◙◙◙ (0)
- ◙◙◙◙◙ (0)
- ◘◘◘◘◘ (0)
- ◘◘◘◘ (0)
- ◘◘◘ (0)
- ◘◘ (0)
- ◘ (0)
- 【Android 其他技术】✚ (0)
- ☞Android反编译 (0)
- ☞抓包 (0)
- ☞多渠道打包及软件上线 (0)
- 【github项目/博客系列】✚ (1)
- ☞注册github步骤 (0)
- ☞github项目 (0)
- ☞优秀博客系列 (1)
- 【开发经验分享】✚ (2)
- ☞Android 知识体系 (1)
- ☞项目经验分享 (0)
- ☞面试与就业指导 (1)
- ☞Android面试技术汇总 (2)
- ♬♬♬ 词汇 ♬♬♬ (0)
- 【Android基础单词】✚ (0)
- 【javaSE单词】✚ (0)
- 【个人博客资料】✚ (0)
- 博客链接 (1)
- 快速开发 (1)
- JavaEE面试题 (1)
最新评论
XUtils===XUtils3框架的基本使用方法(二)
转载自:http://blog.csdn.net/a1002450926/article/details/50364196
上一篇文章,主要介绍了XUtil3的注解模块,网络模块,图片加载模块,今天给大家带来数据库模块的讲解,现在主流的ORM框架很多,比如OrmLite,GreenDao,Active Android,Realm等等,这些框架每个都有自己的优点和缺点,大家完全可以根据自己项目的实际需求进行选择,下面开始进入今天的数据库模块的介绍。
今天主要给大家带来以下几个模块:
如何创建删除一张表
如何对表进行增删查改操作
如何创建数据库和删除数据库
如何建立一表对一表,多表对一表,多表对多表的外键操作。
相信对ORM框架有过了解的人,大概都知道只要创建一个JavaBean对象,在类的上面和属性的上面添加注释标签,这样就能生成一个表。下面带大家看一下XUtils3的实体bean的写法:
- @Table(name="person")
- publicclassPersonTable{
- @Column(name="id",isId=true,autoGen=true)
- privateintid;
- //姓名
- @Column(name="name")
- privateStringname;
- //年龄
- @Column(name="age")
- privateintage;
- //性别
- @Column(name="sex")
- privateStringsex;
- //工资
- @Column(name="salary")
- privateStringsalary;
- publicintgetId(){
- returnid;
- }
- publicvoidsetId(intid){
- this.id=id;
- }
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetSex(){
- returnsex;
- }
- publicvoidsetSex(Stringsex){
- this.sex=sex;
- }
- publicintgetAge(){
- returnage;
- }
- publicvoidsetAge(intage){
- this.age=age;
- }
- publicStringgetSalary(){
- returnsalary;
- }
- publicvoidsetSalary(Stringsalary){
- this.salary=salary;
- }
- @Override
- publicStringtoString(){
- return"PersonTable[id="+id+",name="+name+",age="+age
- +",sex="+sex+",salary="+salary+"]";
- }
- }
通过上方的实体bean,我们需要知道一个表对应的实体bean需要注意以下几点:
1.在类名上面加入@Table标签,标签里面的属性name的值就是以后生成的数据库的表的名字
2.实体bean里面的属性需要加上@Column标签,这样这个标签的name属性的值会对应数据库里面的表的字段。
3.实体bean里面的普通属性,如果没有加上@Column标签就不会在生成表的时候在表里面加入字段。
4.实体bean中必须有一个主键,如果没有主键,表以后不会创建成功,@Column(name=”id”,isId=true,autoGen=true)这个属性name的值代表的是表的主键的标识,isId这个属性代表的是该属性是不是表的主键,autoGen代表的是主键是否是自增长,如果不写autoGen这个属性,默认是自增长的属性。
既然知道怎么写实体bean了,下面看看如何在程序中创建一个数据库和如何生成表的吧。
- publicclassXUtil{
- staticDbManager.DaoConfigdaoConfig;
- publicstaticDaoConfiggetDaoConfig(){
- Filefile=newFile(Environment.getExternalStorageDirectory().getPath());
- if(daoConfig==null){
- daoConfig=newDbManager.DaoConfig()
- .setDbName("shiyan.db")
- .setDbDir(file)
- .setDbVersion(1)
- .setAllowTransaction(true)
- .setDbUpgradeListener(newDbUpgradeListener(){
- @Override
- publicvoidonUpgrade(DbManagerdb,intoldVersion,intnewVersion){
- }
- });
- }
- returndaoConfig;
- }
- }
通过XUti.getDaoConfig()方法,我们能够获取到一个DaoConfig对象。通过getDaoConfig()方法,我们可以知道这个方法主要可以做以下事情:
1.setDbName 设置数据库的名称
2.setDbDir 设置数据库存放的路径
3.setDbVersion 设置数据库的版本
4.setAllowTransaction(true) 设置允许开启事务
5.setDbUpgradeListener 设置一个版本升级的监听方法
那么具体我们什么时候创建的表呢?如果我们单纯的调用XUti.getDaoConfig()方法是不能够创建PersonTable这个实体对应的person这张表的,那么如何创建表呢?
只需要一下几步:
1.DaoConfig daoConfig=XUtil.getDaoConfig();
2.DbManager db = x.getDb(daoConfig);
这里我要告诉大家的是,数据库里面表的创建的时间,只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在,如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作,但是只要我们想进行一张表的CRUD操作,我们必须先执行上面的2步,通俗点说就是必须拿到一个Dbmanger这个对象,我为什么这么说呢?那么咱们就先看一下DbManger的庐山真面目吧。
DbManager部分源码如下:
- publicinterfaceDbManagerextendsCloseable{
- DaoConfiggetDaoConfig();
- SQLiteDatabasegetDatabase();
- /**
- *保存实体类或实体类的List到数据库,
- *如果该类型的id是自动生成的,则保存完后会给id赋值.
- *
- *@paramentity
- *@return
- *@throwsDbException
- */
- booleansaveBindingId(Objectentity)throwsDbException;
- /**
- *保存或更新实体类或实体类的List到数据库,根据id对应的数据是否存在.
- *
- *@paramentity
- *@throwsDbException
- */
- voidsaveOrUpdate(Objectentity)throwsDbException;
- /**
- *保存实体类或实体类的List到数据库
- *
- *@paramentity
- *@throwsDbException
- */
- voidsave(Objectentity)throwsDbException;
- /**
- *保存或更新实体类或实体类的List到数据库,根据id和其他唯一索引判断数据是否存在.
- *
- *@paramentity
- *@throwsDbException
- */
- voidreplace(Objectentity)throwsDbException;
- /////////////delete
- voiddeleteById(Class<?>entityType,ObjectidValue)throwsDbException;
- voiddelete(Objectentity)throwsDbException;
- voiddelete(Class<?>entityType)throwsDbException;
- voiddelete(Class<?>entityType,WhereBuilderwhereBuilder)throwsDbException;
- /////////////update
- voidupdate(Objectentity,String...updateColumnNames)throwsDbException;
- voidupdate(Objectentity,WhereBuilderwhereBuilder,String...updateColumnNames)throwsDbException;
- /////////////find
- <T>TfindById(Class<T>entityType,ObjectidValue)throwsDbException;
- <T>TfindFirst(Class<T>entityType)throwsDbException;
- <T>List<T>findAll(Class<T>entityType)throwsDbException;
- <T>Selector<T>selector(Class<T>entityType)throwsDbException;
- DbModelfindDbModelFirst(SqlInfosqlInfo)throwsDbException;
- List<DbModel>findDbModelAll(SqlInfosqlInfo)throwsDbException;
- /////////////table
- /**
- *删除表
- *
- *@paramentityType
- *@throwsDbException
- */
- voiddropTable(Class<?>entityType)throwsDbException;
- /**
- *添加一列,
- *新的entityType中必须定义了这个列的属性.
- *
- *@paramentityType
- *@paramcolumn
- *@throwsDbException
- */
- voidaddColumn(Class<?>entityType,Stringcolumn)throwsDbException;
- /////////////db
- /**
- *删除库
- *
- *@throwsDbException
- */
- voiddropDb()throwsDbException;
- /**
- *关闭数据库,
- *xUtils对同一个库的链接是单实例的,一般不需要关闭它.
- *
- *@throwsIOException
- */
- voidclose()throwsIOException;
- /////////////custom
- voidexecNonQuery(SqlInfosqlInfo)throwsDbException;
- voidexecNonQuery(Stringsql)throwsDbException;
- CursorexecQuery(SqlInfosqlInfo)throwsDbException;
- CursorexecQuery(Stringsql)throwsDbException;
- }
通过DbManager这个类我们知道主要它做了以下几件事情:
1.getDaoConfig 获取数据库的配置信息
2.getDatabase 获取数据库实例
3.saveBindingId saveOrUpdate save 插入数据的3个方法(保存数据)
4.replace 只有存在唯一索引时才有用 慎重
5.delete操作的4种方法(删除数据)
6.update操作的2种方法(修改数据)
7.find操作6种方法(查询数据)
8.dropTable 删除表
9.addColumn 添加一列
10.dropDb 删除数据库
插入操作
- <spanstyle="font-size:18px;">privatevoidinsert(){
- try{
- PersonTableperson=newPersonTable();
- person.setName("小丽");
- person.setAge(19);
- person.setSex("woman");
- person.setSalary(4000);
- db.save(person);
- //db.saveOrUpdate(person);
- //db.saveBindingId(person);
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }</span>

3种插入操作所需要的参数都是一个实体bean。save和saveOrUpdate的区别就是当一个实体里面的主键一样时如果使用saveOrUpdate会将当前主键对应的这条数据进行替换,而如果你使用了save就会报错。
saveBindingId主要是存进去的数据如果当前表有主键回合主键进行绑定关联。
当你执行完这个方法后,你会看到数据库里面person表里面多了一条数据.
查询操作
当前数据库中的表的效果如下:
1.findById的使用
该方法主要是通过主键的值来进行查找表里面的数据
需求:查找上方person表里面id为3的数据
- privatevoidquery(){
- try{
- PersonTableperson=db.findById(PersonTable.class,"2");
- Log.e("person",person.toString());
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

2.findFirst的使用
该方法主要是返回当前表里面的第一条数据
需求:查找上方person表里面的第一条数据
- privatevoidquery(){
- try{
- PersonTableperson=db.findFirst(PersonTable.class);
- Log.e("person",person.toString());
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

3.findAll的使用
该方法主要是返回当前表里面的所有数据
需求:查找person表里面的所有数据
- privatevoidquery(){
- try{
- List<PersonTable>persons=db.findAll(PersonTable.class);
- Log.e("persons",persons.toString());
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

4.selector的使用
该方法主要是用来进行一些特定条件的查找
需求:查找person表里面age大于30并且性别为man的数据
- privatevoidquery(){
- try{
- List<PersonTable>persons=db.selector(PersonTable.class).where("age",">",30).and("sex","=","man").findAll();
- for(PersonTableperson:persons){
- Log.e("person",person.toString());
- }
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

5.findDbModelFirst的使用
说起这个方法,该方法返回一个DbModel对象,那么该对象是什么呢?
DbModel源码如下:
- publicfinalclassDbModel{
- /**
- *key:columnName
- *value:valueStr
- */
- privateHashMap<String,String>dataMap=newHashMap<String,String>();
- publicStringgetString(StringcolumnName){
- returndataMap.get(columnName);
- }
- publicintgetInt(StringcolumnName){
- returnInteger.valueOf(dataMap.get(columnName));
- }
- publicbooleangetBoolean(StringcolumnName){
- Stringvalue=dataMap.get(columnName);
- if(value!=null){
- returnvalue.length()==1?"1".equals(value):Boolean.valueOf(value);
- }
- returnfalse;
- }
- publicdoublegetDouble(StringcolumnName){
- returnDouble.valueOf(dataMap.get(columnName));
- }
- publicfloatgetFloat(StringcolumnName){
- returnFloat.valueOf(dataMap.get(columnName));
- }
- publiclonggetLong(StringcolumnName){
- returnLong.valueOf(dataMap.get(columnName));
- }
- publicDategetDate(StringcolumnName){
- longdate=Long.valueOf(dataMap.get(columnName));
- returnnewDate(date);
- }
- publicjava.sql.DategetSqlDate(StringcolumnName){
- longdate=Long.valueOf(dataMap.get(columnName));
- returnnewjava.sql.Date(date);
- }
- publicvoidadd(StringcolumnName,StringvalueStr){
- dataMap.put(columnName,valueStr);
- }
- /**
- *@returnkey:columnName
- */
- publicHashMap<String,String>getDataMap(){
- returndataMap;
- }
- /**
- *@paramcolumnName
- *@return
- */
- publicbooleanisEmpty(StringcolumnName){
- returnTextUtils.isEmpty(dataMap.get(columnName));
- }
- }
通过源码,我们分析发现DbModel本质就是一个key为当前表的字段,value为当前某条记录的值的一个HashMap.
需求:查找person表中第一条数据的那个人的年龄age是多少。
- privatevoidquery(){
- try{
- DbModelmodel=db.findDbModelFirst(newSqlInfo("select*fromperson"));
- Log.e("age",model.getString("age"));
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

注意上面的sqlInfo对象的创建的构造参数只需要传入一个sql语句即可。
6.findDbModelAll的用法
该方法的用途就是返回满足sqlInfo信息的所有数据的字段的一个集合。
需求:查找person表中年龄age大于25里面的所有人的姓名
- privatevoidquery(){
- try{
- List<DbModel>persons=db.findDbModelAll(newSqlInfo("select*frompersonwhereage>25"));
- for(DbModelperson:persons){
- Log.e("name",person.getString("name"));
- }
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

基本把查询的6种方式都说了一遍,当然上面的6种需求不一定完全用上面的查询方法可以查出结果,我这么查询的目的主要是带领大家熟悉一下XUtils3的6种查询方法是如何使用的,会了上面的6种方法,我相信你的查询不会有太大问题,至于复杂的查询无非就是sql语句的基本功力了,大家赶紧动手操练一下吧。
修改操作
当前数据库中的表的效果如下:
修改一共有2种方法:
第一种:
需求:我们把上面的id为1的这条记录的age修改为25岁
- privatevoidupdate(){
- try{
- PersonTableperson=db.findById(PersonTable.class,1);
- person.setAge(25);
- db.update(person,"age");
- }catch(Exceptione){
- e.printStackTrace();
- }
- }

第二种:
需求:将person表中性别为man的工资salary都变成6000。
- privatevoidupdate(){
- try{
- List<PersonTable>persons=db.findAll(PersonTable.class);
- for(PersonTableperson:persons){
- person.setSalary(6000);
- db.update(person,WhereBuilder.b("sex","=","man"),"salary");
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
修改数据一共就2种方法,基本都是需要一个实体bean对象去进行操作的,上面的第二种方法无非就是在修改数据时,多了一个限制条件,这样修改数据显得灵活一些。
上面第二种update的方法的参数简单介绍一下:
第一个参数:实体bean对象
第二个参数:一个WhereBuilder对象,主要是通过静态b方法去构造一个where条件语句
第三个参数:需要修改的字段名,如果你的需求是修改了2个或者更多个字段,只需要在后面加上相应的参数即可,例如第二种方法我不止修改salary还需要修改age统一为40岁,参考如下;
- privatevoidupdate(){
- try{
- List<PersonTable>persons=db.findAll(PersonTable.class);
- for(PersonTableperson:persons){
- person.setSalary(6000);
- person.setAge(40);
- db.update(person,WhereBuilder.b("sex","=","man"),"salary","age");
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
删除操作
当前数据库中的person表的效果如下:
1.deleteById
的用法
该方法主要是根据表的主键进行单条记录的删除
需求:删除上方person表中id为5的记录
- privatevoiddelete(){
- try{
- db.deleteById(PersonTable.class,5);
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }
结果如下:
2.delete(Object entity)
的用法
该方法主要是根据实体bean进行对表里面的一条或多条数据进行删除
需求:删除name为骆驼这条信息的记录
- privatevoiddelete(){
- try{
- PersonTableperson=db.selector(PersonTable.class).where("name","=","骆驼").findFirst();
- db.delete(person);
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

3.delete(Class<?> entityType)
该方法主要是用来删除表格里面的所有数据,但是注意:表还会存在,只是表里面数据没有了
- privatevoiddelete(){
- try{
- db.delete(PersonTable.class);
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }
4.
delete(Class<?> entityType, WhereBuilder whereBuilder)
该方法主要是根据where语句的条件进行删除操作
需求:将person表总sex为woman并且salary为5000的信息删除
- privatevoiddelete(){
- try{
- db.delete(PersonTable.class,WhereBuilder.b("sex","=","woman").and("salary","=","5000"));
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }

5.dropTable(Class<?> entityType)
该方法是用来删除表
- privatevoiddelete(){
- try{
- db.dropTable(PersonTable.class);
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }
6.
dropDb()
该方法是用来删除数据库
- db.dropDb();
其他方法
1.addColumn(Class<> entityType, String column)
需求:在上方表中加入一个country字段
PersonTable的实体代码如下:
- @Table(name="person")
- publicclassPersonTable{
- @Column(name="id",isId=true,autoGen=true)
- privateintid;
- //姓名
- @Column(name="name")
- privateStringname;
- //年龄
- @Column(name="age")
- privateintage;
- //性别
- @Column(name="sex")
- privateStringsex;
- //工资
- @Column(name="salary")
- privateintsalary;
- //国家
- @Column(name="country",property="中国")
- privateStringcountry;
- publicintgetId(){
- returnid;
- }
- publicvoidsetId(intid){
- this.id=id;
- }
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetSex(){
- returnsex;
- }
- publicvoidsetSex(Stringsex){
- this.sex=sex;
- }
- publicintgetAge(){
- returnage;
- }
- publicvoidsetAge(intage){
- this.age=age;
- }
- publicintgetSalary(){
- returnsalary;
- }
- publicvoidsetSalary(intsalary){
- this.salary=salary;
- }
- publicStringgetCountry(){
- returncountry;
- }
- publicvoidsetCountry(Stringcountry){
- this.country=country;
- }
- @Override
- publicStringtoString(){
- return"PersonTable[id="+id+",name="+name+",age="+age
- +",sex="+sex+",salary="+salary+",country="
- +country+"]";
- }
- }
- privatevoidaddColumn(){
- try{
- db.addColumn(PersonTable.class,"country");
- }catch(DbExceptione){
- e.printStackTrace();
- }
- }
执行完addColumn方法,我们看到person表里面多了一个country字段.
结果如下:
相关推荐
**XUtils框架详解** XUtils是一款为Android开发者设计的轻量级、全面的开发框架,由国内知名开发者wuyr创建。它集成了四大模块:数据库管理、UI操作、网络请求以及图片处理,大大简化了Android开发过程,提高了开发...
本项目是一个基于Eclipse的xUtils使用示例,通过这个demo,我们可以深入理解xUtils框架的核心功能和使用方法。 首先,xUtils的网络请求模块(HttpUtils)提供了异步和同步两种方式来发送HTTP请求。开发者可以方便地...
Android xUtils框架是一个广泛使用的开源库,由国内知名开发者吴成飞(whef)开发。这个框架集成了多种功能,包括视图注入、数据库操作、网络请求、图片加载等,极大地提高了Android开发的效率。在Android应用开发中...
**Android xUtils框架解析** xUtils是一个轻量级的Android开发框架,由知名开发者吴成峰(花神)创建。这个框架集成了多种功能,包括网络请求、图片加载、数据库操作、视图注入等,旨在简化Android应用的开发流程,...
**XUtils3基本使用方法详解** XUtils3是一款在Android开发中广泛使用的开源框架,它集成了图片加载、数据库操作、网络请求等多种功能,极大地提高了开发效率。本指南将详细介绍XUtils3的基本使用方法,包括如何引...
xUtils框架
【Xutils使用】 Xutils是Android开发中一款非常流行的开源框架,由国内知名开发者wyouflf维护。它集成了数据库操作、图片加载、网络请求、View注入等多个功能,极大地提高了开发效率。在这个"Android Xutils简单...
"Xutils3框架demo"是一个示例项目,展示了如何在实际应用中使用Xutils3。 1. **网络请求**:Xutils3提供了HttpUtils类,用于处理HTTP请求。你可以通过简单的API调用来发送GET或POST请求,框架会自动处理异步和同步...
xUtils简介 xUtils 包含了很多实用的android工具 xUtils 最初源于Afinal框架 进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 10种谓词 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 ...
通过以上步骤,你已经掌握了xUtils框架中下载功能的基本使用。在实际项目中,你可能还需要处理更多细节,如网络异常、权限管理、多线程下载等。但有了xUtils,这些工作都将变得更加简单和高效。在Text_xutil_...
在xUtils3.0版本中,网络框架得到了优化,使其更加高效且易于使用。这个框架的核心目标是简化Android开发,让开发者能够更专注于业务逻辑,而不是基础库的集成和配置。 xUtils的网络模块基于OkHttp,这是一个非常...
在这个“android源码-使用框架(xUtils)”的项目中,我们将深入探讨如何利用xUtils来构建一个高效的Android应用。 首先,`ViewPager`是Android中的一个组件,用于展示多个类似视图,常用于实现滑动切换的效果,如在...
XUtils3是一个广泛使用的Android开发框架,由知名开发者wyouflf维护。这个框架集成了多种功能,旨在简化Android应用的开发过程,提高开发效率。XUtils3的核心理念是模块化,使得开发者可以根据需求选择使用特定的...
最新的"最新最全的xUtils框架"版本可能包含了更多的优化和新特性,比如更兼容新的Android版本,增加了更多实用的API,或者修复了已知的问题,以满足不断发展的Android开发需求。 总之,xUtils框架是Android开发中...
在Android开发中,Xutils3是一个非常实用的框架,它集成了网络请求、注解处理、图片加载和日志管理等多个功能,极大地提高了开发效率。本文将深入探讨Xutils3在网络工具、注解工具、图片工具和日志工具的使用,并...
应用xUtils3框架编写的登录注册界面,使用的是xUtils3.3.22,数据解析使用gson,内含xutils3.3.22jar包和gson2.2.2jar包, xutils3,登录注册界面和主界面,Gson数据解析,xutils3.3.22 jar包,gson的jar包
xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本: HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略; 支持标准的Cookie策略, ...
- 确保在使用网络请求前已经初始化xUtils框架。 - 在不需要网络请求时,及时释放`HttpUtils`对象,避免内存泄漏。 - 为了性能考虑,尽量减少不必要的网络请求,合理利用缓存策略。 10. **最佳实践** - 使用异步...
以下是对XUtils使用方法的详细讲解: **1. BitmapUtils图片缓存路径设置** BitmapUtils是XUtils中的图片处理工具类,它支持图片的加载、缓存以及显示。为了优化图片的加载体验,我们需要设置图片的缓存路径。首先...
在Android应用开发中,Xutils3是一个非常流行的开源框架,它集成了网络请求、图片加载、数据库操作等多种功能。本文将深入探讨Xutils3在数据库操作方面的应用,通过实际案例来展示如何创建数据库、执行增删改查等...