android - 如何将数组中的值填充到 SQLite 数据库中
问题描述
我的应用程序通过一个 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 列。我将不胜感激我的代码的一些帮助。谢谢你
解决方案
您正在遍历数组中的每个项目并填充所有列,因此您有相等数量的行和相等数量的列,这将等于数组的长度。
你应该做的是,删除循环并手动使用索引写入每一列
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);
}
那应该可以解决您的问题。但是解决这个问题的更好方法是使用模型来保存数据库中每一列的值,然后映射到相应的数据,只需有一个类,其中包含要保存在数据库中的每个属性的字符串字段然后使用每个字段的值来填充数据库。
推荐阅读
- hadoop - 为什么 MapReduce 不能将输出放入内存中?
- apache-calcite - 方解石解析器 sqlJoin 节点异常 未启动列表
- date - 如何在闪亮的应用程序中使用 dateInput 中的用户定义值作为“日期”
- java - javax.mail.AuthenticationFailedException: 535 5.7.3 企业电子邮件帐户的身份验证不成功
- javascript - 在 Material Design 选择组件上手动触发“更改”事件
- javascript - 如何在获取 JSON 函数后重新执行 javascript 代码?
- python - 使用变量 Python 的类实例
- wordpress-theming - 如何找到 Gutenberg 块代码并从模板部分调用它
- python - tf.nn.max_pool() 找不到峰值的问题
- javascript - 所有按钮只影响一个输入,而不是各自的输入