Android 如何使用contentvalue在SQlite中插入(自定义)数组列表?

Android 如何使用contentvalue在SQlite中插入(自定义)数组列表?,android,database,sqlite,Android,Database,Sqlite,错误-我获取的类型不匹配。 这是我的密码,请帮忙 public void addDetailDescription(List<Detail> detailList) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); for (int i = 0; i < detailList.size(); i++) {

错误-我获取的类型不匹配。 这是我的密码,请帮忙

public void addDetailDescription(List<Detail> detailList) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    for (int i = 0; i < detailList.size(); i++) {
        Log.e("vlaue inserting==", "" + detailList.get(i));
        values.put(DETAIL_ID, String.valueOf(detailList.get(i)));
        values.put(COLUMN_HEADING, String.valueOf(detailList.get(i)));
        values.put(COLUMN_IMAGE_DETAIl, String.valueOf(detailList.get(i)));
        values.put(COLUMN_DETAIL, String.valueOf(detailList.get(i)));
        values.put(DETAIL_DESCRIPTION_ID, String.valueOf(detailList.get(i)));
    }
    db.insert(DESCRIPTION_DETAIL_TABLE, null, values);

    db.close();
}
public void addDetailDescription(列表detailList){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
对于(int i=0;i
我认为您必须编写这样一个函数,在for循环中,为列表的每一项调用此函数

public long SaveUsers(Users users) {
    long id = -1;

    ContentValues contentValues = null;
    try {
        contentValues = new ContentValues();
        contentValues.put("name", users.getName());
        contentValues.put("email", users.getEmail());
        contentValues.put("phone", users.getPhone());
        contentValues.put("password", users.getPassword());

        db=sqliteHelper.getWritableDatabase();
        id = db.insert(SqliteHelper.TABLE_USERS, null, contentValues);

    } catch (Exception e) {
        Log.d("Database Insert","Exception:"+e.getMessage());
    } finally {
        if(db!=null && db.isOpen())
            db.close();
    }
    return id;
}

在您的代码中,contentValue每次都会更改,最后只会将最后一项插入数据库,这是完全错误的。

。谢谢!它成功地存储在sqlite中。但是它在从JSON获取数据后显示了MYSQL表的最后一行。敬请帮助。它将错误显示为sqlite.SQLiteConstraintException:UNIQUE constraint失败这里我的JSON代码JSONObject product=array.getJSONObject(i);detail.setId(product.getInt(“id”));detail.setHeading(product.getString(“标题”);detail.setImage(product.getString(“images”);detail.setDetaildesc(product.getString(“detaildescription”);detail.setListid(product.getInt(“listid”);详细列表。添加(详细信息)//metohd调用适配器//显示域(详细信息);当您试图插入一个已经存在的id时,会发生此错误。由于密钥是唯一的,因此无法插入。请再次阅读您的代码。detail.setId(product.getInt(“id”)是您的id,您必须在SQLite中将此字段unigue定义为主键,当我查看您的第一个代码时,这一行是values.put(detail_id,String.valueOf(detailList.get(I));您只从列表中获取一个项目,但它不是id!可能您应该编写String.valueOf(detailList.get(i.getid)),这取决于您的列表。@Freeshteh Naji谢谢您的回复。正如您所提到的,我将代码更改为detailList.get(i.getid)。但同样的错误也会出现。只显示MYSQL表的最后一行(两次)在sqlite中。我是android开发的初学者。还有其他方法吗?请建议显示两行相同id的数据,从MYSQl获取并存储在sqlite中。一旦卸载应用程序,清除sqlite数据库,然后再次运行应用程序。您可以做的最好的事情是调试,将断点放在从列表中获取Id和将Id插入数据库的位置。