我想在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();
}
我创建了公交车预订应用程序,所以在此我为此目的提供了搜索城市选项我希望存储城市持久性
答案 0 :(得分:2)
Android应用程序有两种类型的存储空间。
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。