SQLite insert语句始终覆盖现有行

时间:2014-06-08 13:04:20

标签: android sqlite

我有一个简单的插入SQLite语句:

private final String INSERT_FEED = "insert into "
        + TABLE_FEEDS
        + "([id],[first_name], [last_name], [image], [content]) "
        + "values (?,?,?,?,?)";

我在方法中使用的是:

public long insertFeed(FeedsModel feed) {

this.insertStmt = db.compileStatement(INSERT_FEED);
this.insertStmt.bindString(1, feed.getId() + "");
this.insertStmt.bindString(2, feed.getFirstName());
this.insertStmt.bindString(3, feed.getLastName());
this.insertStmt.bindString(4, feed.getProfileImage());
this.insertStmt.bindString(5, feed.getContentDetails());

long result = this.insertStmt.executeInsert();
return result;
}

后来,我在我的活动中使用了这个方法:

            for(int i = 0; i < feedsAdapter.getCount() - 1; i++)
            {
                helper.insertFeed(feedsAdapter.getItem(i));
            }

问题是,该表始终只有1行,因为新数据将覆盖现有行,而不是插入新行。

1 个答案:

答案 0 :(得分:0)

您当前的for循环是插入除最后一个之外的所有FeedsModel。如果列表中只有一个模型,它将解释为什么您没有在表中看到任何新插入,而是:

for (FeedsModel feedsModel : feedsAdapter) {
    helper.insertFeed(feedsModel);
}