Android:将Arraylist值插入数据库
大家好,有人能告诉我如何将arraylist值插入数据库的正确方向吗。我有两个arraylist,如下所示:Android:将Arraylist值插入数据库,android,database,arraylist,Android,Database,Arraylist,大家好,有人能告诉我如何将arraylist值插入数据库的正确方向吗。我有两个arraylist,如下所示: ArrayList<HashMap<String, String>> achieve_val = new ArrayList<HashMap<String, String>>(); ArrayList<HashMap<String, String>> achieve_vol = new ArrayLi
ArrayList<HashMap<String, String>> achieve_val = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> achieve_vol = new ArrayList<HashMap<String, String>>();
HashMap<String, String> Achiev_Vol_map = new HashMap<String, String>();
Achiev_Vol_map.put(PRODUCT_CAKE, Achieve_Vcake);
Achiev_Vol_map.put(PRODUCT_YEASTEXTRACT, Achieve_Vyeastextract);
.
.
.
achieve_vol.add(Achiev_Vol_map);
现在,在我的数据库adpater中,我不确定如何访问这些vlaues并插入数据库,请执行以下操作:
public class ProductCategory {
ArrayList<HashMap<String, String>> achieve_val,achieve_vol ;
public ArrayList<HashMap<String, String>> getAchieve_val() {
return achieve_val;}
public void setAchieve_val(ArrayList<HashMap<String, String>> achieve_val) {
this.achieve_val = achieve_val;}
public ArrayList<HashMap<String, String>> getAchieve_vol() {
return achieve_vol;}
public void setAchieve_vol(ArrayList<HashMap<String, String>> achieve_vol) {
this.achieve_vol = achieve_vol;}
/**my constructor**/
public ProductCategory(ArrayList<HashMap<String, String>> achieve_val,
ArrayList<HashMap<String, String>> achieve_vol) {
super();
this.achieve_val = achieve_val;
this.achieve_vol = achieve_vol;}}
public void topinchartsRecord(ProductCategory productCategory) {
for(ArrayList<HashMap<String, String>> map : achieve_val){
ContentValues cv = new ContentValues();
cv.put(FILE_NAME, map.get(FILE_NAME));
db.insert("tablename", null, cv);
}
}
public void topinchartsRecord(ProductCategory ProductCategory){
for(ArrayList映射:实现值){
ContentValues cv=新的ContentValues();
cv.put(文件名,map.get(文件名));
db.插入(“表名”,空,cv);
}
}
试试这个方法,希望对你有所帮助
public void insertRecords(ArrayList<HashMap<String, String>> data,
String tableName) {
if (data != null && data.size() > 0) {
ContentValues con = new ContentValues();
db.beginTransaction();
for (int i = 0; i < data.size(); i++) {
con.clear();
HashMap<String, String> row = data.get(i);
Iterator<String> it = row.keySet().iterator();
while (it.hasNext()) {
String columnName = it.next();
con.put(columnName, row.get(columnName));
}
db.insertWithOnConflict(tableName, null, con,
SQLiteDatabase.CONFLICT_IGNORE);
}
db.setTransactionSuccessful();
db.endTransaction();
}
}
将Hashmap的ArrayList传递给此方法,表名将插入数据库。您好,我需要将your方法放入我的topincharts方法中吗?我如何调用你的方法嗨,我在我的表中没有看到任何数据,它没有插入,我是否需要更改此字符串columnName=it.next();con.put(columnName,row.get(columnName))???或者……除了这个09-25 06:54:37.351:E/SQLiteLog(21272):(1)接近“-”:语法错误,没有其他错误,但应用程序正在运行,将这个日期字段数据类型改为“TEXT”,而不是“DATE”,它现在是文本……实际上它必须读取并插入这个值(“酵母-营养体/细胞壁”:“-”,等等)。当我在日志中打印时,我得到的值为“-”,但itz没有进入数据库。
public void insertRecords(ArrayList<HashMap<String, String>> data,
String tableName) {
if (data != null && data.size() > 0) {
ContentValues con = new ContentValues();
db.beginTransaction();
for (int i = 0; i < data.size(); i++) {
con.clear();
HashMap<String, String> row = data.get(i);
Iterator<String> it = row.keySet().iterator();
while (it.hasNext()) {
String columnName = it.next();
con.put(columnName, row.get(columnName));
}
db.insertWithOnConflict(tableName, null, con,
SQLiteDatabase.CONFLICT_IGNORE);
}
db.setTransactionSuccessful();
db.endTransaction();
}
}
public void topinchartsRecord(ProductCategory productCategory) {
try{
insertRecords(productCategory.getAchieve_val(),"tableNameForThisValues");
insertRecords(productCategory.getAchieve_vol(),"tableNameForThisValues");
}catch (Exception e) {
}
}