【问题标题】:Insert ArrayList in SQLite Database在 SQLite 数据库中插入 ArrayList
【发布时间】:2016-10-06 14:42:53
【问题描述】:

我有一个来自 API 的 ArrayList,我的 POJO(普通旧 Java 对象)具有所需的 getter 和 setter。

@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 但它不起作用。 任何链接或提示将不胜感激。

这是将其余字符串值插入到数据库中。注意,我还没有将 staff 添加到数据库表中,因为我不知道如何在表。

 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());
    }

【问题讨论】:

  • 您的问题是什么?显示您的数据库插入代码。
  • 定义it's not working
  • 我们能否收到一条关于您的 SO 链接无法正常工作的错误消息?
  • 我想知道如何插入员工 - public static final List CLIENTS_STAFF = new ArrayList();到表中。我应该将它作为文本插入吗?比如 CLIENTS_CONTACT + " TEXT not null)" + CLIENTS_STAFF + " TEXT not null)" ;
  • @Neeraj - 我还没有将员工添加到数据库中。所以不要插入 Arraylist 。我将编辑我的问题以添加字符串值的插入。

标签: java android sqlite arraylist pojo


【解决方案1】:

我找到了解决方案,但没有使用 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 数据库中存储和检索数据时。存储 ->

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());
    }

为了检索数据,我们会将其转换回一个数组列表,以将值存储在 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多