android 数据库 字节数组,Android上的GreenDAO:字节数组作为主键/构建包含字节数组属性Where子句的查询...
关于字节[]又名在greendao BLOB:
看着de.greenrobot.dao.query.WhereCondition.PropertyCondition.checkValueForType条件01目前不支持,因为如果值的类型为byte[],以下几行将始终引发异常。
if (value != null && value.getClass().isArray()) {
throw new DaoException("Illegal value: found array, but simple object required");
}
解决方案1 - 修改并有助于greendao:
您可以修改UPER线,使异常仅抛出,如果值的类型与属性的类型不适合。
if (value != null) {
if (value.getClass().isArray() && !property.type.isArray()) {
throw new DaoException("Illegal value: found array, but " +
"simple object required");
}
if (!value.getClass().isArray() && property.type.isArray()) {
throw new DaoException("Illegal value: found simple object, " +
"but array required");
}
}
也许这将已经解决的问题,但有可能是其他地区greendao停止与此编辑工作或将打破查询。例如,参数与查询的绑定可能不适用于数组。
Solutinon 2 - 使用queryRaw(String where, String... selectionArg)
这是非常简单的,不应该与有关SQLite的一些认识问题。
解决方案3 - 使用查找表
假设原始表:
ORIG
-------------------------------
UUID BLOB
...
可以修改ORIG并添加一个自动增量-的PrimaryKey:
db.execSQL("ALTER TABLE 'ORIG' " +
"ADD COLUMN 'REF_ID' INT PRIMARYKEY AUTOINCREMENT;");
同步服务应该已经关注ORIG.UUID的独特性并忽略新的ORIG.REF_ID -column。为了插入新的UUID,同步服务可能会使用INSERT在ORIG.REF_ID中导致新的自动增量值。 对于更新现有的UUID,同步服务可能会使用UPDATE ... WHERE UUID=?,并且不会创建任何新的ORIG.REF_ID值,但旧值将保留。
总结了ORIG -table在列REF_ID和列UUID之间有一个新的双射。
现在,您可以创建另一个表:
ORIG_IDX
------------------------------
UUID TEXT PRIMARYKEY
REF_ID INT UNIQUE
(如果你的数据是小于8个字节,也将适用于一个INT代替TEXT,但我不知道是否有一个内置的从BLOB到INT。)
ORIG.IDX.UUID将是字符串表示ORIG.UUID。 ORIG_IDX.REF_ID是ORIG.REF_ID的外键。
ORIG_IDX填充和更新触发器:
db.execSQL("CREATE TRIGGER T_ORIG_AI AFTER INSERT ON 'ORIG' BEGIN " +
"INSERT 'ORIG_IDX' SET 'REF_ID' = NEW.REF_ID, 'UUID' = NEW.UUID" +
"END;");
创建相应的触发器,UPDATE和DELETE。
可以使用greendao创建表ORIG和ORIG_IDX然后查询请求的UUID与:
public Orig getOrig(String uuid) {
OrigIdx origIdx = OrigIdxDao.queryBuilder().where(
QrigIdxDao.Properties.UUID.eq(uuid)).unique();
if (origIdx != null) {
return origIdx.getOrig();
}
return null;
}
我觉得字符串的PrimaryKey尚不支持,所以dao.load(uuid)将不可用。
CONCERING AN扩展表:
你可以使用一个string的PrimaryKey列,并提供在实体的保部分转换的方法。在插入之前,您将必须计算主键列。
如果还有其他工具插入数据(例如您的同步服务),您必须在插入前使用触发器计算您的主键。这似乎不可能使用SQLite。因此,主键约束将在同步服务插入时失败,因此此解决方案不适用于主键!
android 数据库 字节数组,Android上的GreenDAO:字节数组作为主键/构建包含字节数组属性Where子句的查询...相关推荐
- android 数据库的种类,Android SQLite数据库
SQLite是一个开源SQL数据库,用于将数据存储到设备上的文本文件中.Android带有内置的SQLite数据库实现. SQLite支持所有关系数据库功能.为了访问此数据库,您不需要为它建立任何类型 ...
- android数据库工具库,android 数据库工具种MyDbHelper
当前位置:我的异常网» 数据库 » android 数据库工具种MyDbHelper android 数据库工具种MyDbHelper www.myexceptions.net 网友分享于:2013 ...
- android数据库存储位置,android数据库存放位置
乐视手机6.0 本来数据库放在Andoid/data 文件夹下 dbFilePath = Environment.getExternalStorageDirectory() + "/Andr ...
- SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统
/*********************************************************************** 大家都知道写博客会很累的,大热天的 希望转载请注明出处 ...
- android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,
前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...
- 一篇好文之Android数据库 GreenDao的完全解析
数据库GreenDao.jpg 之前在开发过程中,数据库基本上会使用Litepal或者SQlite自己写,最近换新环境,公司原先使用的数据库就是GreenDao,在各种情况的作用下,准备了解下Gree ...
- 一篇好文之Android数据库 GreenDao的使用指南(源码+案列)
大家在使用学习使用GreenDao的时候遇到什么问题,欢迎在我的公众号aserbao给我留言,无偿服务!同时,欢迎大家来加入微信群二维码讨论群,一起讨论Android开发技术!群二维码定时在我公众号更 ...
- Android 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences
Android 借助Stetho在Chrome上调试Android网络.数据库.Sharedpreferences 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/a ...
- Android整合网上资源以及个人对GreenDao数据库框架的理解与使用(android-studio开发)
优点:完美试用android,个人比较看好的一点是极其方便的contentprovider,不用自己操很多代码,两三句就能搞定.根据对象进行增删改查,迷糊数据库语句的可以一试. AS开发导入Green ...
最新文章
- 过滤驱动加密文件(代码)
- 夏夏的php开发笔记开写啦
- java.net import_import java.net.URL;是什么类?
- 一起学nRF51xx 16 - adc
- DialogFragment 全屏显示
- OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线
- requests用法
- Java虚拟机:类加载机制详解
- mysql 查询某一主键在那些表中中被设置为外键了
- linux shell之字符串的比较
- python找出一个数的所有因子_python – 找到最大素因子的正确算法
- python 取array并集_Python内置数据结构原理与性能简易分析
- linux---基础04
- java csv下载_java 生成csv文件,弹出下载对话框。。。
- windows安装mysql5.7
- 网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
- Mysql学习总结(37)——Mysql Limit 分页查询优化
- Tomcat配置和使用——详解
- 分享非常有用的Java程序(关键代码)(七)---抓屏程序
- 在qt中获取halcon窗口图片_Qt联合HALCON显示文件夹图片及初步处理
热门文章
- mongdb 建立了索引唯一性还能重复插入?_「数据库系列」Postgres性能调优——Index...
- python是属于it界吗_转行IT行业,Python是不是一个好的选择?
- c语言 Nimm game算法,尼姆博奕(Nimm Game)
- k5b型计算机联锁知识,DS6-K5B计算机联锁系统日常维护注意事项
- 基于numpy实现线性回归问题分析
- 11.Excel数据分析-复合型饼图与漏斗图
- Git工作原理及功能结构
- python同时监听多个端口_python bottle使用多个端口(多个进程)提高并发
- 关于新的描述语言GEZEL的介绍
- 创建macOS 启动安装盘