Как заполнить значения из массива в базу данных SQLite - PullRequest
0 голосов
/ 11 февраля 2019

мое приложение получает данные ввода пользователя через одно поле EditText и добавляет их в массив.Затем приложение передает массив с помощью контроллера databasehelper классу Helper с помощью кода

controller.populateStockMaterialDB(InventoryData); 

. В моем помощнике по базам данных у меня есть следующий код для чтения массива и заполнения таблицы базы данных 6 значениями из массива

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

Данные массива вводятся в таблицу, но не правильно.Вместо одной строки с 6 столбцами, заполненными данными, у меня есть 6 строк с 6 столбцами, заполненными данными.Я был бы признателен за помощь с моим кодом.спасибо

1 Ответ

0 голосов
/ 11 февраля 2019

Вы перебираете каждый элемент в массиве и заполняете все столбцы, поэтому у вас есть одинаковое количество строк и одинаковое количество столбцов, равное длине массива.

Что вы должны сделать, это удалить цикл и написать в каждый столбец, используя индекс вручную

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

, который должен решить вашу проблему.Но лучшим способом решения этой проблемы было бы использование модели для хранения значения для каждого столбца в вашей базе данных, а затем просто сопоставление с соответствующими данными, просто наличие класса, в котором есть строковые поля для каждого свойства, которое вы хотите сохранить в своей базе данных.а затем используйте значение каждого поля для заполнения БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...