这是在Android中本地存储12,000或更多行的方法

时间:2016-06-08 10:27:49

标签: android sqlite

我想在android中存储两个字段city id和city name以及isFavourite local.currently我在SQLite中存储了数据,但这很费时间。所以我读了其他所以有定义的共享偏好,但我不知道这是正确的方法吗?我还听说过内部存储和外部存储这个获取数据的过程是否更快?

我用于商店数据的一些代码:

 public void saveCity(String table,int cityid,String cityName,int isfavourite) {
    database = this.getWritableDatabase();

    ContentValues contentValues = new ContentValues();

    contentValues.put(COLUMN_CITYID, cityid);
    contentValues.put(COLUMN_CITYNAME, cityName);
    contentValues.put(COLUMN_isFavourite, isfavourite);

    database.insert(table, null, contentValues);

    database.close();
}

我创建了公交车预订应用程序,所以在此我为此目的提供了搜索城市选项我希望存储城市持久性

4 个答案:

答案 0 :(得分:2)

Android应用程序有两种类型的存储空间。

  1. 共享偏好设置
  2. SQLite的
  3. 1.Shared Preferences:

    这是一个重量轻的存储。我们可以将密钥值对存储在此存储中。

    实施例。电子邮件,密码。

    <强> 2。源码

    它用于存储一些重型数据。它将数据存储在表(行和列)中。

    您提到要存储带有城市ID和城市名称的12,000个数据,因此您必须使用sqlite来存储数据。

答案 1 :(得分:2)

快速插入数据库中的数据为此使用PrepareStatement,为了更快的执行,为数据调用ArrayList,只有一个用于将所有数据插入数据库

public void saveCity(String table, ArrayList<CustomCityClass> cityList) {


        String sql = "INSERT OR REPLACE INTO " + table + " ( "+COLUMN_CITYID +","+ COLUMN_CITYNAME +","+ COLUMN_isFavourite+") VALUES ( ?, ?, ?)";

        mDatabase.beginTransactionNonExclusive();
        SQLiteStatement stmt = mDatabase.compileStatement(sql);

        for (int x = 0; x < cityList.size(); x++) {
            stmt.bindLong(1, cityList.get(x).getCityID());
            stmt.bindString(2, cityList.get(x).getCityname());
            stmt.bindLong(3, cityList.get(x).getisFavourite());

            stmt.execute();
            stmt.clearBindings();

    }
        mDatabase.setTransactionSuccessful();
        mDatabase.endTransaction();


    }

}

并为您的城市数据制作自定义POJO课程CustomCityClass

答案 2 :(得分:-1)

从本地存储中存储和检索数据的最佳方法是Realm

答案 3 :(得分:-1)

我建议尝试使用免费的ORM Realm。 Sqlite也太容易了,快得多!

请注意Realm Java