如何在SQLite

时间:2018-01-29 09:21:11

标签: android

我的表格定义如下:

VideoID INTEGER,PRIMARY KEY,Status TEXT

我希望每当用户滚动列表时更新此表,如果有任何videoID的新数据应该更新,否则如果新的videoIDfound它应该插入表中

它与insertWithOnConflict()运行良好但问题是它每次都使用默认值更新看到的列,我不希望我想要存储无法更改的videoID的显示状态

我尝试的替代方案是:

  String que="INSERT OR REPLACE INTO " + TABLE_NAME + "("+VIDEOTITLE+","+VIDEO_ID+","+VIDEO_TIME+","
               +VIDEO_VIEW+","+VIDEO_AMOUNT+","+VIDEO_THUMB+","+VIDEO_URL+","+VIDEO_DETAILS+","+YOUTUBE_KEY+")"+" VALUES ( "+VIDEOTITLE+","+VIDEO_ID+","+VIDEO_TIME+","+VIDEO_VIEW+","+VIDEO_AMOUNT+","+VIDEO_THUMB+","+VIDEO_URL+
               ","+VIDEO_DETAILS+","+YOUTUBE_KEY+",(SELECT "+STATUS+" FROM "+TABLE_NAME+" WHERE videoId = "+ curr_id+" ));";
       db.execSQL(que);

但这并没有执行。 curr_id是videoId。

1 个答案:

答案 0 :(得分:-1)

不幸的是,SQLite不支持insert or replace

您可以使用on conflict replace来实现类似的行为。您可以阅读更多相关信息this question

请记住,on conflict replace实际上会删除现有记录并创建另一个记录。这意味着,如果您为主键使用自动增量列,您将获得不同的记录,而不是更新现有记录。

如果您想保持记录的完整性,您可能需要查看其他更复杂的选项。