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插入数据库的位置。