在Sqlite数据库中保存所有纬度和经度

时间:2018-03-02 07:43:55

标签: android database sqlite android-sqlite

我想在Sqlite数据库的IN_RIDE_LatLng数据库中保存所有纬度和经度,其latitudelongitude列名称。

创建表。

   database.execSQL(" CREATE TABLE IF NOT EXISTS " + IN_RIDE_LatLng + " ("
            + Latitude + " TEXT, "
            + Longitude + " TEXT" + ");");

保存所有纬度和经度

public void insertLatLng(Double latitude, Double logitude) {
    try {

        ContentValues contentValues = new ContentValues();
        contentValues.put(NewDatabaseForInRideData.Latitude, latitude);
        contentValues.put(NewDatabaseForInRideData.Longitude, logitude);
        database.insert(NewDatabaseForInRideData.IN_RIDE_LatLng, null, contentValues);

        }
     catch (Exception e) {
        e.printStackTrace();

}}

如何从数据库中检索ArrayList<LatLng> latLngList = new ArrayList(); 中的所有LatLng。 函数如何返回存储在数据库中的所有LatLng列表。

我这样做是为了检索列表但不起作用。

      public ArrayList<LatLng> getLatLngList() {
    try {
        Cursor cursor = database.rawQuery("SELECT latitude , longitude FROM in_ride_lat_lng" , null);/*(die tabel se naam)*/

       // String[] columns = new String[]{NewDatabaseForInRideData.Latitude,NewDatabaseForInRideData.Longitude};
        //Cursor cursor = database.query(NewDatabaseForInRideData.IN_RIDE_LatLng, columns, null, null, null, null, null);
        if (cursor.moveToFirst()) {
            do {
                latLngList.add(new LatLng(cursor.getDouble(cursor.getColumnIndex(NewDatabaseForInRideData.Latitude)), cursor.getDouble(cursor.getColumnIndex(NewDatabaseForInRideData.Longitude))));
               // return latLngList;
            } while (cursor.moveToFirst());

        }
        return latLngList;

    } catch (Exception e) {
        e.printStackTrace();
        return latLngList;
    }
}

1 个答案:

答案 0 :(得分:0)

请替换您的getLatLngList()方法,如下所示:

public ArrayList<LatLng> getLatLngList()
{

  ArrayList<LatLng> latLngList = new ArrayList<>();
  Cursor cursor = database.rawQuery("SELECT * FROM " + NewDatabaseForInRideData.IN_RIDE_LatLng, null);

  cursor.moveToFirst();

  while (!cursor.isAfterLast()){
      latLngList.add(new LatLng(cursor.getDouble(cursor.getColumnIndex(NewDatabaseForInRideData.Latitude)),cursor.getDouble(cursor.getColumnIndex(NewDatabaseForInRideData.Latitude))));
      cursor.moveToNext();
  }

  cursor.close();
  return latLngList;
}