如何将我的Arraylist保存到SQLite数据库?

时间:2014-03-19 04:58:30

标签: android sqlite arraylist hashmap

我想保存我的 SQLite数据库中的ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>()以后检索它以显示存储在其中的项目。我怎样才能做到这一点? 请提供示例。 在此先感谢:)

5 个答案:

答案 0 :(得分:0)

您可以使用默认的标准java序列化程序或我们自己的lib来序列化它。 跟着你的性能。需求:您可以阅读此基准:https://github.com/eishay/jvm-serializers/wiki

答案 1 :(得分:0)

HashMap中是否有多条记录。如果是这样,您将保存每条记录。 有最好的方法保存到文件作为序列化对象 保存到文件:

FileOutputStream fos = null;
    ObjectOutputStream oos = null;
    try {
        List<Map<String, String> list=new ArrayList<HashMap<String, String>>();

        fos = getContext().openFileOutput(OFFERS_FILE_NAME,
                Context.MODE_PRIVATE);
        oos = new ObjectOutputStream(fos);
        oos.writeObject(list);

    } catch (JSONException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fos != null) {
                fos.flush();
                fos.close();
            }
            if (oos != null) {
                oos.flush();
                oos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

从文件中读取:

List<Map<Integer, String>> orderData = null;

FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = getContext().openFileInput(OFFERS_FILE_NAME);
ois = new ObjectInputStream(fis);
orderData = (HashMap<Integer, String>) ois.readObject();
} catch (Exception e) {
e.printStackTrace(); // We have not data in SD Card

} finally {
        try {
        if (fis != null)
            fis.close();
        if (ois != null)
            ois.close();
        } catch (Exception e) {
}
        }

答案 2 :(得分:0)

for (int i = 0; i < yourlistname.size(); i++) 
                    {
                            String sql = "INSERT or replace INTO tbl_Resources (resourceID, contentID, imgpath) "

                                            + "VALUES ('"
                                            + sitesList.get(i)
                                            + "', '"
                                            + sitesList.get(i)
                                            + "', '"
//                                          
                                            +sitesList.get(i)
                                            + "')";                 
                        db.execSQL(sql);

                    }   


for (int i = 0; i < list.size(); i++) {

            //insert stat like by this you will get listCountry.get(i))

        }

答案 3 :(得分:-1)

如何迭代该arraylist并将其添加到数据库中??

答案 4 :(得分:-2)

Tutorial Link

请参阅上面的链接。我有一个使用HashMap进行SqLite操作的实例,使用SQliteOpenHelper。它一次只有一个插入,但如果你想在一个实例中插入它们,你可能想要创建一个循环。