Ich verwende den Befehl execSQL
, um Daten in eine Tabelle einzufügen, die einen Fremdschlüssel enthält.Verwenden von ContentValues zum Einfügen in Fremdschlüsselfeld
So mache ich derzeit.
String query = "INSERT INTO "+ SunshineContract.WeatherEntry.TABLE_NAME +" ("+
SunshineContract.WeatherEntry.COL_LOC_KEY + ", "+
SunshineContract.WeatherEntry.COL_WIND_SPEED+ ", "+
SunshineContract.WeatherEntry.COL_DEGREE+ ") VALUES ((SELECT " +
SunshineContract.LocationEntry._ID + " FROM "+ SunshineContract.LocationEntry.TABLE_NAME + " WHERE "+
SunshineContract.LocationEntry._ID + " = 1), "+
80, 98);";
sqLiteDatabaseWritable.execSQL(query);
Ich möchte Inhaltsanbieter verwenden, um Daten in meine Datenbank einzufügen. Momentan kann ich den Inhaltsanbieter jedoch nicht zum Einfügen meiner Daten verwenden, da ich keinen Inhaltswert für dieses Fremdschlüsselfeld erstellen kann.
contentValue.put(SunshineContract.WeatherEntry.COL_LOC_KEY, 'SELECT " +
SunshineContract.LocationEntry._ID + " FROM "+ SunshineContract.LocationEntry.TABLE_NAME + " WHERE "+
SunshineContract.LocationEntry._ID + " = 1)'
Gibt es eine Methode, die Daten in Tabelle mit Fremdschlüssel mit ContentValues
einsetzen kann, so dass ich ContentResolver
verwenden kann?
In den meisten Szenarien werden die Daten von Web-API (JSON oder XML) kommen und Sie müssen diese JSON in einige Java-Datenobjekt analysieren. Dann müssen Sie nur Attribute dieses Java-Datenobjekts als ContentValue beim Einfügen in eine Tabelle setzen. Können Sie die Hintergrundgeschichte Ihres Problems näher erläutern? –