在地图上保存纬度和经度点击到 SQLite 数据库不起作用

Posted

技术标签:

【中文标题】在地图上保存纬度和经度点击到 SQLite 数据库不起作用【英文标题】:Saving the Latitude and Longitude on map click to SQLite database not working 【发布时间】:2021-12-14 12:09:48 【问题描述】:

我正在尝试将纬度和经度保存到我的 SQLite 数据库中。但是它没有保存它,也没有收到任何错误消息。

这是我到目前为止的代码:

dbHandler = new DBHandler(MapsActivity.this);
    googleMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() 

        @Override
        public void onMapLongClick(LatLng latLng) 

            String latLong = latLng.latitude + " : " + latLng.longitude;

            dbHandler.addNewLocation(latLong);

            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(latLng);
            markerOptions.title(latLng.latitude + " : " + latLng.longitude);
            googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
            googleMap.addMarker(markerOptions);
            Toast.makeText(MapsActivity.this, "Location has been added.", Toast.LENGTH_SHORT).show();
        
    );

然后是 DBHandler 类:

public class DBHandler extends SQLiteOpenHelper 

private static final String DB_NAME = "locationsdb";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "mylocations";
private static final String ID_COL = "id";
private static final String NAME_LAT = "lat";

public DBHandler(Context context) 
    super(context, DB_NAME, null, DB_VERSION);


@Override
public void onCreate(SQLiteDatabase db) 
    String query = "CREATE TABLE " + TABLE_NAME + " ("
            + ID_COL + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + NAME_LAT + " TEXT)";

    db.execSQL(query);


public void addNewLocation(String latLong) 
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(NAME_LAT, latLong);
    db.insert(TABLE_NAME, null, values);
    db.close();


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    // this method is called to check if the table exists already.
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);


那么当我检查数据库时,里面没有保存任何东西?

有人可以告诉我我在这里做错了什么吗?

谢谢

【问题讨论】:

查看db.insert(TABLE_NAME, null, values)的返回值。如果不是 -1,则该行被添加到表中。 或使用insertOrThrow() 来获取异常,详细说明它可能失败的原因。 【参考方案1】:

在调用getWritableDatabase() 后尝试db.beginTransaction() 并在addNewLocation(...) 中使用db.endTransaction() 而不是db.close()

【讨论】:

以上是关于在地图上保存纬度和经度点击到 SQLite 数据库不起作用的主要内容,如果未能解决你的问题,请参考以下文章

怎样用经度和纬度查询具体的位置

拖放后将 Google Map Marker 的新纬度和经度保存到文本框

如何查询经纬度坐标

您如何单击地图并在表单中填充纬度和经度字段?

android开发 百度地图怎么获取线的经纬度

使用纬度和经度显示谷歌地图