【问题标题】:How to insert single column of info into prepopulated sqlite database如何将单列信息插入预填充的sqlite数据库
【发布时间】:2020-11-28 18:01:19
【问题描述】:

应用程序从 assets 文件夹中复制一个预先填充的数据库,并从那里获取每一列的数据并将其存储在数组列表中,然后从那里在地图上绘制标记。

现在我需要一种方法,如果标记位于设备的某个范围内,则该方法可以将预先存在的数据列(称为“活动”)的值从 0 更改为 1。我写的方法只添加了大约 40 行新的信息,其中“活动”列的数据为“1”,其余为 NULL,但不影响以前的数据。

如何在设备范围内的右侧标记数据的行上将“活动”列更改为 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<Location>() {
                    @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();

提前致谢。

【问题讨论】:

    标签: java android sqlite google-maps


    【解决方案1】:

    如果你有行 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} );
        }
    

    或者您可以通过添加? 来设置您想要的条件,并且对于每个?,您必须在第四个参数的字符串数组中添加一个字符串。像这样:

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

    【讨论】:

    • 非常感谢您的快速回答,这成功了。谢谢你,祝你有美好的一天。
    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 2013-03-11
    • 2017-07-15
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2015-04-26
    • 2014-06-10
    相关资源
    最近更新 更多