如何将数组中的值填充到 SQLite 数据库中

How to Populate values from Array into SQLite Database

我的应用程序通过一个 EditText 字段接收用户输入数据并添加到数组中。然后应用程序使用代码

通过数据库助手控制器将数组传递给助手 class
controller.populateStockMaterialDB(InventoryData); 

在我的数据库助手中,我有以下代码来读取数组并使用数组

中的 6 个值填充数据库 table
public void populateStockMaterialDB(ArrayList<String> inventoryData) {
        SQLiteDatabase db = this.getWritableDatabase();

        for (int i=0; i< inventoryData.size(); i++) {
         ContentValues contentValues = new ContentValues();
            contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_MATERIAL, inventoryData.get(i));
            contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_UOM_STORE, inventoryData.get(i));
            contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_UOM_AVAILABLE, inventoryData.get(i));
            contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_QUANTITY_STORE, inventoryData.get(i));
            contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_QUANTITY_AVAILABLLE, inventoryData.get(i));
            contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_MOQ, inventoryData.get(i));

            this.getWritableDatabase().insertOrThrow(FoodoclockContract.FoodolockEntry.TABLE_NAME7, "", contentValues);
        }
    }

数组数据填充到 table 但不正确。我没有用一行 6 列填充数据,而是用 6 行 6 列填充了数据。 我将不胜感激对我的代码的一些帮助。谢谢

您正在遍历数组中的每个项目并填充所有列,因此行数和列数相等,这将等于数组的长度。

你应该做的是这个,删除循环并手动使用索引写入每一列

public void populateStockMaterialDB(ArrayList<String> inventoryData) {
    SQLiteDatabase db = this.getWritableDatabase();

     ContentValues contentValues = new ContentValues();
        contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_MATERIAL, inventoryData.get(1));
        contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_UOM_STORE, inventoryData.get(2));
        contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_UOM_AVAILABLE, inventoryData.get(3));
        contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_QUANTITY_STORE, inventoryData.get(4));
        contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_QUANTITY_AVAILABLLE, inventoryData.get(5));
        contentValues.put(FoodoclockContract.FoodolockEntry.COLUMN_MOQ, inventoryData.get(6));

        this.getWritableDatabase().insertOrThrow(FoodoclockContract.FoodolockEntry.TABLE_NAME7, "", contentValues);
}

这应该可以解决您的问题。但是更好的方法是使用一个模型来保存数据库中每一列的值,然后只映射到相应的数据,只需要一个 class 每个 属性 都有字符串字段] 你想保存在你的数据库中,然后使用每个字段的值来填充数据库。