Android Ormlite的综合查询
来源:互联网 发布:2017优化设计英语答案 编辑:程序博客网 时间:2024/04/30 21:59
/**这段代码写的是查询数据库中的数据,并且是按照id排序(倒序),下列中是new一个Date对象(时间对象),然后根据时间的跨度进行查询的,下面new Date中有个坑1.date对象,如果你不设置日期,那么就是当前的日子,所以你要用来查询跨度需要去设置 月份内的日子为 1 或者最后一天2.date月份是从0开始的,我查的时候老是出错,然后慢慢看date发现,这个月份单词是什么,然后一查发现.从0开始的,好吧.程序员是0开始,但是我想的是,应该一月份是1才是正常人吧...3.如果你查询当月,嗯,这个好想只能这么查,你用eq参数去查的时候,这个好像要完全相等,你肯定无法做到月份时分秒什么的完全相等吧.我想的话.*/public List<Personal> limitCategoryQuery(int startIndex) { List<Personal> query = null; try { Dao<Personal, Integer> personalDataDao = openHelper.getPersonalDataDao(); QueryBuilder<Personal, Integer> queryBuilder = personalDataDao.queryBuilder(); PreparedQuery<Personal> prepare = queryBuilder.prepare(); Date date = new Date(); date.setMonth(0); date.setYear(113); Date date1 = new Date(); date.setYear(113); date1.setMonth(1); queryBuilder.orderBy("_id", false).limit(10).offset(startIndex).where().ge("rizi", date).and().lt("rizi", date1); query = queryBuilder.query(); } catch (SQLException e) { e.printStackTrace(); } return query; }
// 查询本地数据库的数据,分段查询 private List<Personal> queryDate() { List<Personal> personals = RegisiterOpenHelper.getHelper(this).limitCategoryQuery(0); List<Personal> querys = null; try { if (noMoreDate) { Toast.makeText(QueryActivity.this, "没有更多数据", Toast.LENGTH_LONG).show(); return querys; } Dao<Personal, Integer> personalDataDao = RegisiterOpenHelper.getHelper(this).getPersonalDataDao(); QueryBuilder<Personal, Integer> queryBuilder = personalDataDao.queryBuilder(); // offset 就是说你从哪个数字开始, false表示倒序,true表示正序, limit是表示一次查多少个 // 毕竟手机内存有限,一次查几条,再显示才是王道. queryBuilder.orderBy("_id", false).offset(startIndex).limit(LIMIT); querys = queryBuilder.query(); startIndex += querys.size(); if (querys.size() < LIMIT) { noMoreDate = true; } } catch (SQLException e) { e.printStackTrace(); return null; } return querys; }
/** *数据库的存储表单,这个配置,可以直接生产响应的字段,其实还可以设置长度的,很多参数,可以看文档. */@DatabaseTable(tableName = "regisger_table")public class Personal { public Personal() { /*this.registerTime = new Date().getTime() +"";*/ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = simpleDateFormat.format(new Date()); this.registerTime = format; this.rizi = new Date(); } @DatabaseField(columnName = "rizi", dataType = DataType.DATE) private Date rizi; @DatabaseField(generatedId = true) private int _id; /** * 姓名 */ @DatabaseField(columnName = "name", canBeNull = true) private String peopleName; /** * 性别 */ @DatabaseField(columnName = "sex", canBeNull = true) private String peopleSex; /** * 民族 */ @DatabaseField(columnName = "nation", canBeNull = true) private String peopleNation; /** * 出生日期 */ @DatabaseField(columnName = "birthday", canBeNull = true) private String peopleBirthday; /** * 住址 */ @DatabaseField(columnName = "address", canBeNull = true) private String peopleAddress; /** * 身份证号 */ @DatabaseField(columnName = "idcardNum", canBeNull = true) private String peopleIDCode; /** * 签发机关 */ @DatabaseField(columnName = "department", canBeNull = true) private String department; /** * 有效期限:开始 */ @DatabaseField(columnName = "startDates", canBeNull = true) private String startDate; /** * 有效期限:结束 */ @DatabaseField(columnName = "endDate", canBeNull = true) private String endDate; /** *登记时间 */ @DatabaseField(columnName = "registerTime", canBeNull = true) private String registerTime; /** * 身份证头像 */ @DatabaseField(dataType = DataType.BYTE_ARRAY) private byte[] photo; /** * 没有解析成图片的数据大小一般为1024字节 */ private byte[] headImage; /** * 三代证指纹模板数据,正常位1024,如果为null,说明为二代证,没有指纹模板数据 */ private byte[] model; /** * 登记的事件 类型原因什么的 */ @DatabaseField(columnName = "workingReason", canBeNull = false) private String workingReason; public String getRegisterTime() { return registerTime; } public String getWorkingReason() { return workingReason; } public void setWorkingReason(String workingReason) { this.workingReason = workingReason; } public void setRegisterTime(String registerTime) { this.registerTime = registerTime; } public int get_id() { return _id; } public void set_id(int _id) { this._id = _id; } public String getPeopleName() { return peopleName; } public void setPeopleName(String peopleName) { this.peopleName = peopleName; } public String getPeopleSex() { return peopleSex; } public void setPeopleSex(String peopleSex) { this.peopleSex = peopleSex; } public String getPeopleNation() { return peopleNation; } public void setPeopleNation(String peopleNation) { this.peopleNation = peopleNation; } public String getPeopleBirthday() { return peopleBirthday; } public void setPeopleBirthday(String peopleBirthday) { this.peopleBirthday = peopleBirthday; } public String getPeopleAddress() { return peopleAddress; } public void setPeopleAddress(String peopleAddress) { this.peopleAddress = peopleAddress; } public String getPeopleIDCode() { return peopleIDCode; } public void setPeopleIDCode(String peopleIDCode) { this.peopleIDCode = peopleIDCode; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getEndDate() { return endDate; } public void setEndDate(String endDate) { this.endDate = endDate; } public byte[] getPhoto() { return photo; } public void setPhoto(byte[] photo) { this.photo = photo; } public byte[] getHeadImage() { return headImage; } public void setHeadImage(byte[] headImage) { this.headImage = headImage; } public byte[] getModel() { return model; } public void setModel(byte[] model) { this.model = model; } public Date getRizi() { return rizi; } public void setRizi(Date rizi) { this.rizi = rizi; } @Override public String toString() { return "Personal{" + "_id=" + _id + ", peopleName='" + peopleName + '\'' + ", peopleSex='" + peopleSex + '\'' + ", peopleNation='" + peopleNation + '\'' + ", peopleBirthday='" + peopleBirthday + '\'' + ", peopleAddress='" + peopleAddress + '\'' + ", peopleIDCode='" + peopleIDCode + '\'' + ", department='" + department + '\'' + ", startDate='" + startDate + '\'' + ", endDate='" + endDate + '\'' + ", registerTime='" + registerTime + '\'' + ", photo=" + Arrays.toString(photo) + ", headImage=" + Arrays.toString(headImage) + ", model=" + Arrays.toString(model) + ", workingReason='" + workingReason + '\'' + '}'; }}
/**这里创建只用了OpenHelper去继承框架类的方式,还有另外直接继承响应的Activity的方式实现,具体可以看文档.*/public class RegisiterOpenHelper extends OrmLiteSqliteOpenHelper { private static RegisiterOpenHelper openHelper; private static final String DATABASE_NAME = "registerinfo.db"; private static final int DATABASE_VERSION = 1; private Dao<Personal, Integer> simpleDao = null; private RuntimeExceptionDao<Personal, Integer> simpleRuntimeDao = null; public RegisiterOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { try { Log.i(RegisiterOpenHelper.class.getName(), "onCreate"); TableUtils.createTable(connectionSource, Personal.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) { } /** * Returns the Database Access Object (DAO) for our SimpleData class. It will create it or just give the cached * value. */ public Dao<Personal, Integer> getPersonalDataDao() throws SQLException { if (simpleDao == null) { simpleDao = getDao(Personal.class); } return simpleDao; } /** * 单例 * @param cotext * @return */ public static RegisiterOpenHelper getHelper(Context cotext) { if (openHelper == null) { synchronized (RegisiterOpenHelper.class) { if (openHelper == null) { openHelper = OpenHelperManager.getHelper(cotext, RegisiterOpenHelper.class); } } } return openHelper; } /** * Close the database connections and clear any cached DAOs. */ @Override public void close() { super.close(); simpleDao = null; }}
总结:存储的时候,尽量选择相对应的格式,图方便都用String的话,无法进行大小的对比这种比较负责的查询操作.谨记!
下面的站点可能需要科学上网姿势.
github资源站点.android相关的
关于字段中的DateType相应的文档说明
ORMLTE的文档
1 0
- Android Ormlite的综合查询
- Android ormLite复杂条件查询
- OrmLite for android--Ormlite的大概介绍
- Android ORMLite的使用
- Android ORMLite 的使用
- ormlite 在android中 排序 条件查询
- ormlite 在android中 排序 条件查询
- Android ORMLite框架组合查询条件
- android studio ormLite复杂条件查询
- Android OrmLite 的基本用法
- android ormlite
- Android OrmLite
- Android中使用OrmLite(二):复杂条件查询
- android的ORMLite的sqlite自定义框架
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- android ormlite no such table的bug
- Android ORMLite 框架的入门用法
- 真实工作环境下使用Git提交代码的流程
- 第二阶段 2、添加多线程任务,完善下载,暂停,继续,取消四个功能
- Android平台的崩溃捕获机制及实现
- Android系统启动过程
- web前端开发你应该知道的好消息
- Android Ormlite的综合查询
- Spring IoC的理解----找女朋友的方法
- 跟siki老师学C#第二天
- 在代码中修改TextView的DrawableRight图片
- Oracle查询1-12月数据
- ExpandableListView安卓开发可扩展的listview
- 堆排序算法
- JavaScript 学习摘要
- Jquery scroll 向下滚动到据顶部超过1000px时,回到顶部