Сохранение широты и долготы на карте нажмите, чтобы база данных SQLite не работала

#java #android #sqlite #android-sqlite

Вопрос:

Я пытаюсь сохранить широту и долготу в своей базе данных 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); } }  

Тогда, когда я проверяю базу данных, в ней ничего не сохраняется?

Может кто-нибудь, пожалуйста, сообщить мне, что я здесь делаю не так?

Спасибо

Комментарии:

1. Проверьте возвращаемое значение db.insert(TABLE_NAME, null, values) . Если значение не равно -1, то строка добавляется в таблицу.

2. Или используйте insertOrThrow() вместо этого, чтобы получить исключение с подробными сведениями о том, почему оно может не сработать.

Ответ №1:

Попробуйте db.beginTransaction() после звонка getWritableDatabase() и используйте db.endTransaction() вместо db.close() in addNewLocation(...) .