如何使用 android sqlite 数据库更新一行中的多列?
How to update multiple columns in one row using android sqlite database?
我有一个 android 存储位置数据的应用程序。 SQLite 数据库中有三组纬度和经度。我想获取一个位置的数据 3 次并将其存储到数据库中。在我的第一步中存储地点、位置地址、纬度和经度。第二步不改变位置和地方取经纬度,它存储到下一列第一个数据。
http://i.stack.imgur.com/YRaTL.jpg
你可以看到上图url有3组纬度和经度。获得第一个纬度和经度后,我想将第二个纬度和经度添加到列 'latitudey' 和 'longitudey',然后将下一个值添加到 'latitudez' 和 'longitudez'。我的编码几乎没问题,但是在添加第二行时出现问题。第一个纬度和经度正在保存而没有任何错误,但在第二个和第三个中复制了上限值。您可以在下图中看到它。我该如何解决这个问题?我的数据库创建代码如下。我需要在这里做哪些更改?
public static final String DATABASE_NAME = "locationdb.db";
public static final String TABLE_NAME = "locations";
public static final String CCOLUMN_ID = "id";
public static final String COLUMN_LAT = "latitude";
public static final String CCOLUMN_LON = "longitude";
public static final String COLUMN_LAT2="latitudey";
public static final String COLUMN_LON2="longitudey";
public static final String COLUMN_LAT3="latitudez";
public static final String COLUMN_LON3="longitudez";
public static final String COLUMN_LOC = "location";
public static final String COLUMN_PLACE="place";
private HashMap hp;
public SQLiteController(Context context)
{
super(context, DATABASE_NAME, null,1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db)
{
String query;
query = "CREATE TABLE locations ( id INTEGER PRIMARY KEY, place TEXT, location TEXT, latitude TEXT, longitude TEXT, latitudey TEXT, longitudey TEXT, latitudez TEXT, longitudez TEXT)";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
String query;
query = "DROP TABLE IF EXISTS locations";
db.execSQL(query);
onCreate(db);
}
public boolean insertLocation(String place, String location, String latitude, String longitude )
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("place", place);
values.put("location", location);
values.put("latitude",latitude);
values.put("longitude",longitude);
database.insert("locations", null, values);
database.close();
return true;
}
public boolean insertLocation2(String latitudey, String longitudey)
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("latitudey",latitudey);
values.put("longitudey", longitudey);
database.update("locations", values, null,null);
database.close();
return true;
}
public boolean insertLocation3(String latitudez, String longitudez)
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("latitudez", latitudez);
values.put("longitudez", longitudez);
database.update("locations", values, null, null);
database.close();
return true;
}
您必须指明要更新哪一行:
public boolean insertLocation2(String place, String location, String latitudey, String longitudey)
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("latitudey",latitudey);
values.put("longitudey", longitudey);
database.update("locations", values, "place=? and location=?", new String[] {place, location});
database.close();
return true;
}
否则将更新所有行!
我有一个 android 存储位置数据的应用程序。 SQLite 数据库中有三组纬度和经度。我想获取一个位置的数据 3 次并将其存储到数据库中。在我的第一步中存储地点、位置地址、纬度和经度。第二步不改变位置和地方取经纬度,它存储到下一列第一个数据。
http://i.stack.imgur.com/YRaTL.jpg
你可以看到上图url有3组纬度和经度。获得第一个纬度和经度后,我想将第二个纬度和经度添加到列 'latitudey' 和 'longitudey',然后将下一个值添加到 'latitudez' 和 'longitudez'。我的编码几乎没问题,但是在添加第二行时出现问题。第一个纬度和经度正在保存而没有任何错误,但在第二个和第三个中复制了上限值。您可以在下图中看到它。我该如何解决这个问题?我的数据库创建代码如下。我需要在这里做哪些更改?
public static final String DATABASE_NAME = "locationdb.db";
public static final String TABLE_NAME = "locations";
public static final String CCOLUMN_ID = "id";
public static final String COLUMN_LAT = "latitude";
public static final String CCOLUMN_LON = "longitude";
public static final String COLUMN_LAT2="latitudey";
public static final String COLUMN_LON2="longitudey";
public static final String COLUMN_LAT3="latitudez";
public static final String COLUMN_LON3="longitudez";
public static final String COLUMN_LOC = "location";
public static final String COLUMN_PLACE="place";
private HashMap hp;
public SQLiteController(Context context)
{
super(context, DATABASE_NAME, null,1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db)
{
String query;
query = "CREATE TABLE locations ( id INTEGER PRIMARY KEY, place TEXT, location TEXT, latitude TEXT, longitude TEXT, latitudey TEXT, longitudey TEXT, latitudez TEXT, longitudez TEXT)";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
String query;
query = "DROP TABLE IF EXISTS locations";
db.execSQL(query);
onCreate(db);
}
public boolean insertLocation(String place, String location, String latitude, String longitude )
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("place", place);
values.put("location", location);
values.put("latitude",latitude);
values.put("longitude",longitude);
database.insert("locations", null, values);
database.close();
return true;
}
public boolean insertLocation2(String latitudey, String longitudey)
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("latitudey",latitudey);
values.put("longitudey", longitudey);
database.update("locations", values, null,null);
database.close();
return true;
}
public boolean insertLocation3(String latitudez, String longitudez)
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("latitudez", latitudez);
values.put("longitudez", longitudez);
database.update("locations", values, null, null);
database.close();
return true;
}
您必须指明要更新哪一行:
public boolean insertLocation2(String place, String location, String latitudey, String longitudey)
{
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("latitudey",latitudey);
values.put("longitudey", longitudey);
database.update("locations", values, "place=? and location=?", new String[] {place, location});
database.close();
return true;
}
否则将更新所有行!