7月 292020
 
一、首先,第一点,为什么不是int型,而是long型

  没在代码中看出原因,在greenDao的源代码中只是硬性的规定必须使用Long/long型,估计是为了确保自增值的范围足够大?(应该不是)

  做此限制的代码在文件DaoGenerator/src/org/greenrobot/greendao/generator/Property.java中

  在sqlite库的源码中,绑定字段的地方也没有int型相关的参数,只有bindLong和bindDouble、bindString等,和这个有关?

  sqlite库源码:frameworks\base\core\java\android\database\sqlite\SQLiteProgram.java

二、为什么是Long而不是long?

  奇怪的是,官方代码中的意思是Long/long都可以,但long是不行的,在插入2条记录的时候就会报ndroid.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: notes.localid错误。

  这个涉及使用sql语句向数据库的自增字段插入数据的问题,sql语句如下:

  insert into table(id, name) values(NULL, ‘ldr’);

  在greenDao中如果成员是long型,则未赋值时返回的是0,如果是Long型,则返回的是null,所以是这个原因?

  这个涉及的文件是bean类生成的相应的Dao类,比如”NoteBeanDao.java”

打赏
 Posted by on 2020-07-29

Sorry, the comment form is closed at this time.