我已經搜索解決與其他主題的問題,但我沒有找到好的。所以我會解釋我想要做什麼。 我在網站上恢復JSON文件像這樣的:HashMap <String,String>等到SQLiteDataBase
{
"prod": {
"ean": "000000000000",
"cat": "category ...",
"title": "title ...",
"brand": "brand ...",
"intake": [
{
"carbohydrates": "10g"
},
{
"protein": "8g"
},
{
"lipids": "0g"
}
],
"others": "blablabla"
}
}
我可以分析得很好,並顯示在像TextViews不同領域,我用一個ListView來顯示「入口」陣列。現在我想將所有這些值放入數據庫中。我可以把一切都放在我的數據庫中,除了這個數組(我使用HashMap)。知道這個陣列的元素數量可能會有所不同, 有人有一個想法如何進行?
謝謝,我爲我的壞英語道歉。 如果你問我,我可以提供更多信息。
有我的數據庫處理程序:
public class Base extends SQLiteOpenHelper {
private static int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "etiquettesDatabase";
private static final String TABLE_ETIQUETTE = "etiquettes";
private static final String KEY_ID = "id";
private static final String KEY_TITLE = "title";
private static final String KEY_BRAND = "brand";
private static final String KEY_INTAKE = "intake"; // i don't know how to proceed here
private static final String KEY_FAMILY = "family";
private static final String KEY_OTHERS = "others";
public Base(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE =
"CREATE TABLE " + TABLE_ETIQUETTE + "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_TITLE + " TEXT,"
+ KEY_BRAND + " TEXT,"
+ KEY_FAMILY + " TEXT,"
+ KEY_INTAKE + " TEXT,"
+ KEY_OTHERS + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ETIQUETTE);
onCreate(db);
}
void addEtiquette(Etiquette etiquette) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_TITLE, etiquette.get_titre());
values.put(KEY_BRAND, etiquette.get_marque());
values.put(KEY_FAMILY, etiquette.get_famille());
//values.put(KEY_INTAKE, etiquette.get_nutrition());
values.put(KEY_OTHERS, etiquette.get_autres());
db.insert(TABLE_ETIQUETTE, null, values);
db.close();
}
Etiquette getEtiquette(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = null;
if (db != null) {
cursor = db.query(TABLE_ETIQUETTE, new String[]{KEY_ID,
KEY_TITLE, KEY_BRAND, KEY_INTAKE, KEY_OTHERS}, KEY_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
}
Etiquette etiquette;
/*
if (cursor != null && cursor.moveToFirst()) {
cursor.moveToFirst(); Log.v("test", "cursor /null");
etiquette = new Etiquette(Integer.parseInt(cursor.getString(0)),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getClass(),
cursor.getString(5)
);
} else {
etiquette=null; Log.v("test", "etiquette = null");
}
*/
cursor.close();
//Log.v("test", "cursor"+String.valueOf(Integer.parseInt(cursor.getString(0))));
/*
Etiquette etiquette = new Etiquette(Integer.parseInt(cursor.getString(0)),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4));
*/
// return etiquette;
return null;
}
public List<Etiquette> getAllEtiquettes() {
List<Etiquette> etiquettesList = new ArrayList<Etiquette>();
String selectQuery = "SELECT * FROM " + TABLE_ETIQUETTE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Etiquette etiquette = new Etiquette();
etiquette.set_id(Integer.parseInt(cursor.getString(0)));
etiquette.set_titre(cursor.getString(1));
etiquette.set_famille(cursor.getString(2));
etiquette.set_marque(cursor.getString(3));
//etiquette.set_nutrition(cursor.getString(4));
etiquette.set_autres(cursor.getString(5));
etiquettesList.add(etiquette);
} while (cursor.moveToNext());
}
return etiquettesList;
}
public int updateEtiquette(Etiquette etiquette) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_TITLE, etiquette.get_titre());
values.put(KEY_BRAND, etiquette.get_famille());
values.put(KEY_OTHERS, etiquette.get_autres());
// values.put(KEY_INTAKE, etiquette.get_nutrition());
values.put(KEY_OTHERS, etiquette.get_autres());
return db.update(TABLE_ETIQUETTE, values, KEY_ID + " = ?",
new String[]{String.valueOf(etiquette.get_id())});
}
public void deleteEtiquette(Etiquette etiquette) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_ETIQUETTE, KEY_ID + " = ?",
new String[]{String.valueOf(etiquette.get_id())});
db.close();
}
public int getEtiquettesCount() {
SQLiteDatabase db = this.getReadableDatabase();
String countQuery = "SELECT * FROM " + TABLE_ETIQUETTE;
assert db != null;
Cursor cursor = db.rawQuery(countQuery, null);
int n = cursor.getCount();
cursor.close();
return n;
}
int getDATABASE_VERSION(){
return this.DATABASE_VERSION;
}
void setDATABASE_VERSION(int newDATABASE_VERSION){
this.DATABASE_VERSION = newDATABASE_VERSION;
}
}
什麼是你的數據庫表結構? –
等一下,我編輯我的問題,告訴你我的DB處理程序 –
有我的數據庫結構Renjith –