java—如何将一列信息插入预填充的sqlite数据库

lsmd5eda  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(306)

应用程序从assets文件夹复制一个预填充的数据库,从那里获取每列的数据值,并将其存储在数组列表中,然后从那里将标记绘制到Map上。
现在我需要一种方法,如果标记位于设备的某个范围内,则该方法可以将预先存在的数据列(称为“active”)的值从0更改为1。我编写的方法只添加了大约40行信息,其中“active”列的数据为“1”,其余为空,但不影响以前的数据。
如何将设备范围内的右标记数据行的“活动”列更改为1?我希望我写这封信是为了让你能理解。我大致知道如何根据需要更改特定行的列信息,但由于我需要根据设备当时的位置获取特定行,因此我不知道如何这样做。
databasehelper到目前为止更新列的方法

public void setActive()
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
                cv.put("active", 1);
                db.update(TABLE_NAME, cv, "id= ?",null );
            }
``` `Mainactivity` ,一种检查位置是否在范围内的方法。它还有一个额外的方法,每10秒使用一个计时器来检查位置是否在范围内。

fusedLocationProviderClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener() {
@Override
public void onSuccess(Location location) {
// Got last known location. In some rare situations this can be null.
if (location != null) {
Double lat = location.getLatitude();
Double lon = location.getLongitude();
LatLng latlon = new LatLng(lat, lon);

                            for (MyLatLngData location1 : locations) {
                                LatLng loc1 = new LatLng(location1.getLatitude(),location1.getLongitude());
                                if (SphericalUtil.computeDistanceBetween(latlon, loc1) < 1000) {
                                    databaseHelper.setActive();
提前谢谢。
t3psigkw

t3psigkw1#

如果有行id,则可以执行以下操作:

public void setActive(String id)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("active", 1);
        db.update(TABLE_NAME, cv, "id= ?",new String[]{id} );
    }

也可以通过添加 ? 对于每一个 ? 必须在forth参数的字符串数组中添加字符串。这样地:

db.update(TABLE_NAME, cv, "id= ? AND another_column_name=?",new String[]{id,another_value} );

相关问题