SQLite upsert for android

时间:2015-07-14 09:23:13

标签: android sqlite sql-update android-sqlite upsert

我创建了下一个表:

final String SQL_CREATE_TABLE_NEWS_TAPE = "CREATE TABLE " + NewsTapeEntry.TABLE_NAME +
                " (" + NewsTapeEntry.NEWS_ID + " INTEGER PRIMARY KEY, " +
                NewsTapeEntry.USER_ID + " INTEGER NOT NULL, " +
                NewsTapeEntry.CONTENT + " TEXT, " +
                NewsTapeEntry.CREATED_AT + " TEXT, " +

                " FOREIGN KEY (" + NewsTapeEntry.NEWS_ID + ") REFERENCES " +
                NewsTapeEntry.TABLE_NAME + " (" + NewsTapeEntry.NEWS_ID + "), " +
                " UNIQUE (" + NewsTapeEntry.NEWS_ID + ") ON CONFLICT UPDATE);";

但如果我更新myNews,则每次都插入此表中的每一行... 我需要下一个结果:当它更新时 - 冷却检查当前ID是否存在,如果为true - 更新表中的当前行,如果为false - make insert! 但是有一点是必须要做的:如果ID存在,并且行更新,则不能用默认值覆盖空字段。例如: 我正在更新myNews,我收到现有NEWS_ID的答案,但在这个答案中不包含字段CREATED_AT。因此,在更新行字段后,CREATED_AT必须是先前的(未更新,不会被默认值替换)。

任何解决方案都会很高兴!

更新

当我收到新数据时,我正在做bulckIncert:

getContentResolver().bulkInsert(Contract.NewsTapeEntry.CONTENT_URI, mCvArray);

0 个答案:

没有答案