关于字节[]又名在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子句的查询...相关推荐

  1. android 数据库的种类,Android SQLite数据库

    SQLite是一个开源SQL数据库,用于将数据存储到设备上的文本文件中.Android带有内置的SQLite数据库实现. SQLite支持所有关系数据库功能.为了访问此数据库,您不需要为它建立任何类型 ...

  2. android数据库工具库,android 数据库工具种MyDbHelper

    当前位置:我的异常网» 数据库 » android 数据库工具种MyDbHelper android 数据库工具种MyDbHelper www.myexceptions.net  网友分享于:2013 ...

  3. android数据库存储位置,android数据库存放位置

    乐视手机6.0 本来数据库放在Andoid/data 文件夹下 dbFilePath = Environment.getExternalStorageDirectory() + "/Andr ...

  4. SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统

    /*********************************************************************** 大家都知道写博客会很累的,大热天的 希望转载请注明出处 ...

  5. android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  6. 一篇好文之Android数据库 GreenDao的完全解析

    数据库GreenDao.jpg 之前在开发过程中,数据库基本上会使用Litepal或者SQlite自己写,最近换新环境,公司原先使用的数据库就是GreenDao,在各种情况的作用下,准备了解下Gree ...

  7. 一篇好文之Android数据库 GreenDao的使用指南(源码+案列)

    大家在使用学习使用GreenDao的时候遇到什么问题,欢迎在我的公众号aserbao给我留言,无偿服务!同时,欢迎大家来加入微信群二维码讨论群,一起讨论Android开发技术!群二维码定时在我公众号更 ...

  8. Android 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences

    Android 借助Stetho在Chrome上调试Android网络.数据库.Sharedpreferences 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/a ...

  9. Android整合网上资源以及个人对GreenDao数据库框架的理解与使用(android-studio开发)

    优点:完美试用android,个人比较看好的一点是极其方便的contentprovider,不用自己操很多代码,两三句就能搞定.根据对象进行增删改查,迷糊数据库语句的可以一试. AS开发导入Green ...

最新文章

  1. 过滤驱动加密文件(代码)
  2. 夏夏的php开发笔记开写啦
  3. java.net import_import java.net.URL;是什么类?
  4. 一起学nRF51xx 16 -  adc
  5. DialogFragment 全屏显示
  6. OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线
  7. requests用法
  8. Java虚拟机:类加载机制详解
  9. mysql 查询某一主键在那些表中中被设置为外键了
  10. linux shell之字符串的比较
  11. python找出一个数的所有因子_python – 找到最大素因子的正确算法
  12. python 取array并集_Python内置数据结构原理与性能简易分析
  13. linux---基础04
  14. java csv下载_java 生成csv文件,弹出下载对话框。。。
  15. windows安装mysql5.7
  16. 网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
  17. Mysql学习总结(37)——Mysql Limit 分页查询优化
  18. Tomcat配置和使用——详解
  19. 分享非常有用的Java程序(关键代码)(七)---抓屏程序
  20. 在qt中获取halcon窗口图片_Qt联合HALCON显示文件夹图片及初步处理

热门文章

  1. mongdb 建立了索引唯一性还能重复插入?_「数据库系列」Postgres性能调优——Index...
  2. python是属于it界吗_转行IT行业,Python是不是一个好的选择?
  3. c语言 Nimm game算法,尼姆博奕(Nimm Game)
  4. k5b型计算机联锁知识,DS6-K5B计算机联锁系统日常维护注意事项
  5. 基于numpy实现线性回归问题分析
  6. 11.Excel数据分析-复合型饼图与漏斗图
  7. Git工作原理及功能结构
  8. python同时监听多个端口_python bottle使用多个端口(多个进程)提高并发
  9. 关于新的描述语言GEZEL的介绍
  10. 创建macOS 启动安装盘