2016-10-06 93 views
-3

我有一個ArrayList來自一個API,我的POJO(普通舊Java對象)具有所需的getter和setter。在SQLite數據庫中插入ArrayList

@SerializedName("staff") 
@Expose 
private List<String> staff = new ArrayList<String>(); 
@SerializedName("departments") 
@Expose 
private List<String> departments = new ArrayList<String>(); 

我想廣告的人員和部門爲SQLite表。 我現有的表格具有其餘的字符串值。但我無法將ArrayList添加到表格中。

public static final String CREATE_TABLE_QUERY = "CREATE TABLE " + TABLE_NAME + "" + 
      " (" + ID + " TEXT PRIMARY KEY not null, " + 
      //need to change product id into String or TEXT 
      CLIENTS_NAME + " TEXT not null," + 
      CLIENTS_ADDRESS1 + " TEXT not null," + 
      CLIENTS_ADDRESS2 + " TEXT not null," + 
      CLIENTS_ADDRESS3 + " TEXT not null," + 
      CLIENTS_ADDRESS4 + " TEXT not null," + 
      TYPE + " TEXT not null," + 
      CLIENTS_CONTACT + " TEXT not null)" ; 

如何添加Arraylist? 我試過this但它不工作。 任何鏈接或提示將不勝感激。

這是字符串值到database.Note其餘的插入,我仍然沒有,因爲我不知道如何插入表中的一個ArrayList中添加的人員到數據庫中的表呢。

public void addProducts(Clients_POJO products) { 
    //CRUD , adding Products 

    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(Constants.ClientsDATABASE.ID, products.getId()); 
    values.put(Constants.ClientsDATABASE.CLIENTS_NAME, products.getName()); 
    values.put(Constants.ClientsDATABASE.CLIENTS_ADDRESS1, products.getAddress1()); 
    values.put(Constants.ClientsDATABASE.CLIENTS_ADDRESS2, products.getAddress2()); 
    values.put(Constants.ClientsDATABASE.CLIENTS_ADDRESS3, products.getAddress3()); 
    values.put(Constants.ClientsDATABASE.CLIENTS_ADDRESS4, products.getAddress4()); 
    values.put(Constants.ClientsDATABASE.TYPE, products.getType()); 
    values.put(Constants.ClientsDATABASE.CLIENTS_CONTACT, products.getContact()); 

    try { 

     db.insert(Constants.ClientsDATABASE.TABLE_NAME, null, values); 
    } catch (Exception e) { 
     Log.d(TAG, e.getMessage()); 
    } 
+0

您的問題是什麼?顯示你的數據庫插入代碼。 –

+2

定義'它不工作' – njzk2

+0

我們可以得到一個錯誤信息,說明你的SO鏈路不工作嗎? – Scrambo

回答

0

我發現該溶液在不使用轉換GSON它。 讓部門的POJO值爲ArrayList。

@SerializedName("departments") 
@Expose 
private List<String> departments = new ArrayList<String>(); 

要創建數據庫,我們會將列存儲爲表中的字符串。

public static final String INPUT_DEPARTMENTS = "departments"; 
public static final String CREATE_TABLE_QUERY = "CREATE TABLE " + TABLE_NAME + "" + 
      " (" + ID + " TEXT PRIMARY KEY not null, " + 
      INPUT_DEPARTMENTS + " TEXT not null)" ; 

現在同時存儲和檢索數據和從SQLite的database.Storing - >

public void addProducts(Clients_POJO products) { 
    //CRUD , adding Products 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(Constants.ClientsDATABASE.INPUT_DEPARTMENTS, String.valueOf(products.getDepartments())); 
    try { 

     db.insert(Constants.ClientsDATABASE.TABLE_NAME, null, values); 
    } catch (Exception e) { 
     Log.d(TAG, e.getMessage()); 
    } 

用於檢索數據,我們將其轉換回一個ArrayList存儲在POJO的價值。

SQLiteDatabase db = this.getWritableDatabase(); 
    final ProductFetchListener mListener = listener; 
    Cursor cursor = db.rawQuery(Constants.ClientsDATABASE.GET_PRODUCTS_QUERY,null); 
    final List<Clients_POJO> productsListDB = new ArrayList<>(); 
    if (cursor.getCount() > 0) { 
     if (cursor.moveToFirst()) { 
      do { 
       Clients_POJO products = new Clients_POJO(); 
       products.setFromDatabase(true); 

現在我們將其轉換爲數組列表。

String s = cursor.getString(cursor.getColumnIndex(Constants.ClientsDATABASE.INPUT_DEPARTMENTS)); 
       List<String> myList = new ArrayList<String>(Arrays.asList(s.split(","))); 
       products.setDepartments(myList);