Java Android上的SQLite未删除行
我在Android应用程序中使用SQLite。一切都很好,但当我在天气应用程序中添加一个位置,然后将其刷走时,它不会从表中删除该位置 在这里,我获取位置,添加位置并删除它Java Android上的SQLite未删除行,java,android,sql,sqlite,Java,Android,Sql,Sqlite,我在Android应用程序中使用SQLite。一切都很好,但当我在天气应用程序中添加一个位置,然后将其刷走时,它不会从表中删除该位置 在这里,我获取位置,添加位置并删除它 public TreeMap<String, LatLng> getSQLLocations() { TreeMap<String, LatLng> locations = new TreeMap<>(); for (int i =0; i < mCursor.getC
public TreeMap<String, LatLng> getSQLLocations() {
TreeMap<String, LatLng> locations = new TreeMap<>();
for (int i =0; i < mCursor.getCount(); i++) {
mCursor.moveToPosition(i);
String name = mCursor.getString(mCursor.getColumnIndex(WeatherContract.WeatherEntry.COLUMN_LOCATION_NAME));
double lat = mCursor.getDouble(mCursor.getColumnIndex(WeatherContract.WeatherEntry.COLUMN_LAT));
double lon = mCursor.getDouble(mCursor.getColumnIndex(WeatherContract.WeatherEntry.COLUMN_LONG));
LatLng latLng = new LatLng(lat, lon);
locations.put(name, latLng);
}
return locations;
}
public boolean removeSQLLocation(int position) {
mCursor.moveToPosition(position);
long id = mCursor.getLong(mCursor.getColumnIndex(WeatherContract.WeatherEntry._ID));
boolean deleted = mDb.delete(WeatherContract.WeatherEntry.TABLE_NAME, WeatherContract.WeatherEntry._ID + "="
+ id, null) > 0;
return deleted;
}
public long addSQLLocation(String name, LatLng latLng) {
double lat = latLng.latitude;
double lon = latLng.longitude;
ContentValues cv = new ContentValues();
cv.put(WeatherContract.WeatherEntry.COLUMN_LOCATION_NAME, name);
cv.put(WeatherContract.WeatherEntry.COLUMN_LAT, lat);
cv.put(WeatherContract.WeatherEntry.COLUMN_LONG, lon);
long ret = mDb.insert(WeatherContract.WeatherEntry.TABLE_NAME, null, cv);
refreshLocationNames();
return ret;
}
公共树映射getSQLLocations(){
树映射位置=新树映射();
对于(int i=0;i游标是临时对象,不应长时间保留 无论如何,光标中的位置不一定与列表中的位置相同,尤其是在进行更改后,或者在进行排序/筛选时。
将ID存储在列表中,以后使用该ID访问该行。您的DB类中是否有delete row方法?不确定。你能帮我查一下吗,我是SQL新手,非常感谢!非常感谢,但经过一些重构后,它没有工作。我添加了一个自定义对象,它保存了SQL中的名称、位置和id,但是当我删除它时,它仍然不起作用。你能看看我的SQL和MainActivity类-方法“removeSQLLocation”吗。在我的github上