在我们学习afinal框架前,大家一定学过安卓自带的数据库,Sqlite,这种数据虽然也提供了很多方便的方法建表,插入删除什么的,但是对于初学者来说无疑是非常麻烦的,冗余的步骤,多的要死的代码,写完就忘,格式记不住。别担心,现在使用afinal框架,建表,插入删除一步到位。
- 首先我们需要把afinal框架的jar拖入到lib中
-
这里的包会上传,大家自行下载,拖入 - 然后就可以使用了finaldb了
Finaldb的工作原理非常简单,就是你首先定义一个类,去存储任何你想要存的,之后Finaldb会把这个类直接封装成一个表,现在我们看看具体实现。
首先建立一个User类,这里我们因为形象化定义类名,类名随意。
注意一点,建立User类必须包含id,否则建表出错
public class User { private int id; private String name; private String course;//课程 private int grade;//成绩 /////////////getter and setter 不能省略哦/////////////// public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } }
然后,在主MainActivity里面写入
public class MainActivityActivity extends FinalActivity { @ViewInject(id=R.id.textView) TextView textView; //这里使用了afinal的ioc功能,以后将会讲到 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); FinalDb db = FinalDb.create(this); User user = new User(); user.setName("zyy"); user.setCourse("离散"); user.setGrade(78); db.save(user); List<User> userList = db.findAll(User.class);//查询所有的用户 Log.e("AfinalOrmDemoActivity", "用户数量:"+ (userList!=null?userList.size():0)); textView.setText(userList.get(0).getName()+":"+user.getRegisterDate()); } }
注意让Activity继承FinalActivity,到这里就完了,一定很惊讶这么简单就完成了?!!!!
然后注意添加权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
大家查看的时候可以用DDMS查看
接下来我们建立较为复杂数据库,可以存入多值,并可以查找离散,高数成绩的平均分
public class MainActivity extends FinalActivity { @ViewInject(id=R.id.info) TextView info; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //直接建表 FinalDb db=FinalDb.create(this); db.deleteAll(User.class); for (int i = 0; i < 5; i++) { User user=new User(); user.setName("张依依"+i); user.setCourse("高数"); user.setGrade(100-i); db.save(user); } for (int i = 0; i < 5; i++) { User user=new User(); user.setName("张依依"+(i+5)); user.setCourse("离散"); user.setGrade(78+i); db.save(user); } // List<User> userlist=db.findAll(User.class); // String text=""; // for (int i = 0; i < userlist.size(); i++) { // text+=userlist.get(i).getName()+userlist.get(i).getCourse()+userlist.get(i) // .getGrade()+"\n"; // } // info.setText(text); List<User> userlist=db.findAllByWhere(User.class, "course='离散'"); List<User> userlist1=db.findAllByWhere(User.class, "course='高数'"); CourseAverage course=new CourseAverage(); // Toast.makeText(getApplicationContext(), ""+userlist.size(), Toast.LENGTH_SHORT).show(); int average=0; for (int i = 0; i < userlist.size(); i++) { average+=userlist.get(i).getGrade(); } course.setCourse("离散"); course.setAverage(average/userlist.size()); db.save(course); CourseAverage course1=new CourseAverage(); int average2=0; for (int i = 0; i < userlist.size(); i++) { average2+=userlist1.get(i).getGrade(); } course1.setCourse("高数"); course1.setAverage(average2/userlist.size()); db.save(course1); List<User> userlist2=db.findAllByWhere(User.class, "grade<95"); Toast.makeText(getApplicationContext(), ""+userlist2, Toast.LENGTH_SHORT).show(); List<User> userlist3=db.findAllByWhere(User.class, "1=1","grade"); } }
看见我们又定义一个表用来存储高数离散平均分,我们看一下另一个类的建立
public class CourseAverage { private int average; private int id; private String course;// 课程 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public int getAverage() { return average; } public void setAverage(int average) { this.average = average; } }
这样就完成了,整个数据库建立,我们来看一下效果图吧
手机必须root才能查看,下载root explorer
我们会发现表名是系统定义的,但是为什么我的数据库可以自己命名呢,诀窍在这里
@Table(name = "CourseAverage") public class CourseAverage {
在class上方加入自己定义的表名即可
学习了这么方便的数据库,是不是雀雀欲试呢?
相关推荐
afinal是一个android的orm、ioc... afinal的FinalDb组件是android的一个轻量级的orm框架,使用简单,一行代码就可以完成数据库的各种操作功能。 文章地址:http://blog.csdn.net/michael_yy/article/details/8154860
总的来说,Volley.jar和Afinal框架都是Android开发中的得力助手,它们各自的特点和优势使得在不同的项目场景中都能发挥重要作用。通过理解和掌握这两个框架,开发者能够更好地应对各种开发挑战,提高代码质量和开发...
**Afinal框架详解** Afinal是一款轻量级的Android ORM(对象关系映射)框架,由知秋二叉枫(FinalTeam)开发。这个框架旨在简化Android应用中的数据库操作,让开发者可以更专注于业务逻辑,而不是繁琐的数据访问层...
这个Demo项目是学习和理解Afinal框架的好材料,通过运行和分析代码,你可以深入理解如何在Android应用中有效地管理和操作SQLite数据库。在实际开发中,结合Afinal提供的缓存机制和异步操作,可以进一步提升数据操作...
`afinal`是一个专为Android平台设计的轻量级开发框架,它整合了数据库操作、注解处理、网络请求以及图片缓存等多种功能,极大地简化了开发者在日常开发中的工作流程,提高了开发效率。下面将详细介绍`afinal`框架的...
Android Afinal框架是一款轻量级的数据库操作库,由陈国良(FinalTeam)开发,主要目的是简化Android中的SQLite数据库操作。Afinal不仅提供了数据库的CRUD(创建、读取、更新、删除)操作,还支持了网络请求、文件...
本项目“基于afinal框架的记事本”就是利用Afinal简化了记事本应用的数据存储和查询功能。 首先,Afinal的核心优势在于它的简单易用性。通过集成Afinal,开发者无需手动编写SQL语句,而是可以直接使用Java对象与...
Afinal,作为一个广受欢迎的开源框架,主要由四个核心模块构成:FinalDB、FinalActivity、FinalHttp以及FinalBitmap。这些模块分别针对Android开发中的数据库操作、Activity管理、网络请求和图片处理,为开发者提供...
**Afinal框架DB部分Demo详解** Afinal是一个轻量级的Java ORM(对象关系映射)框架,它基于Spring JDBC,旨在简化数据库操作,提供一套简单易用的API,使得开发者能够更专注于业务逻辑,而不是繁琐的SQL和JDBC代码...
本项目以Afinal框架为基础,实现了一个简单的图片异步缓存加载功能,旨在帮助开发者更高效地处理图片资源。 首先,我们需要了解Afinal框架。Afinal由尹吉欢创建,它的设计思想是简化Android中的数据库操作。Afinal...
Afinal框架是一款轻量级的Java ORM(对象关系映射)框架,它的设计目标是简化Android平台上的数据库操作。在Android应用开发中,数据库管理是一个常见的任务,而Afinal通过提供一套简洁、高效的API,使得开发者能够...
"New_03"可能表示这是一个更新版本或第三部分的代码示例,暗示我们将会看到Afinal框架在实际开发中的应用和一些更新改进。 【描述解析】 描述中的"Android源码——afinal开源框架实例源码_new_03.zip"与标题内容...
Android Afinal开源框架是一款针对Android应用开发的轻量级数据库框架,由陈宇晖(yihui)开发,它...通过研究这个实例,开发者可以快速上手Afinal框架,将其应用到自己的项目中,实现高效且稳定的Android应用开发。
一、Afinal框架概述 Afinal由知名Android开发者陈超(flysnow)创建,其设计目标是简化Android应用中的数据库操作,提供一套简洁的API,使得开发者无需关心SQL语句的编写,而是通过面向对象的方式进行数据操作。...
**Afinal框架详解** Afinal,作为一个轻量级的Android开发框架,它的设计目标是简化Android应用程序中的数据库操作和网络请求。由杨金城(yanjingcheng)开发,Afinal以其小巧、灵活、易用的特点,深受开发者喜爱,...
`afinal`通过使用`FinalDb`实现了对象关系映射(ORM),使得数据库操作变得简单。同时,`afinal`的`ImageLoader`组件则负责图片的异步加载和缓存。在给定的压缩包中,`BitmapCacheHelper`可能是实现图片缓存的关键类...
本文将深入解析Afinal框架的核心原理,并通过实际案例展示其使用方法。 一、Afinal框架概述 Afinal由知宇(FinalTeam)团队开发,主要分为两个部分:FinalDB(数据库管理)和FinalHttp(网络请求)。FinalDB基于...
Afinal由两部分组成:FinalDb(数据库操作)和FinalHttp(网络请求)。FinalHttp不仅支持HTTP请求,还内置了图片下载和缓存机制,非常适合于图片加载。 1. **异步加载**:在Android中,为了保证UI线程不被阻塞,...
Afinal框架通过提供便利的数据存取和网络通信工具,为Android开发者提供了一站式的解决方案。其简单易用的特性使得开发者能够快速开发出高效、稳定的应用,同时降低了维护成本。对于初学者和经验丰富的开发者来说,...