Tag zusammen,
ja, ich schon wieder...
Ups, im Thread-Namen sollte das eigentlich ein UPDATE sein und kein INSERT... langsam macht sich das lange vor der Kiste hocken bemerkbar Oo
Nachdem es das letzte mal Probleme mit dem Insert gab, macht nun ein Update Probleme.
Ich bekomme von einem REST-Service im JSON-Format eine ganze Reihe an Daten. Diese sollen Vorhandene Datensätze in meiner Datenbank teilweise updaten.
Die Log-Ausgabe für zwei Schleifendurchläufe sieht so aus:
Wenn ich das SQL-Stmt. aus dem Log kopiere, und in der Konsole einfüge, funktionierts!
Hab's auch schon mit ContentValues und update(...) versucht - selbes Ergebnis...
Irgendjemand eine Idee woran das liegt und was ich dagegen tun könnte?
Vielen Dank schon mal für eure Hilfe!
VG
ja, ich schon wieder...
Ups, im Thread-Namen sollte das eigentlich ein UPDATE sein und kein INSERT... langsam macht sich das lange vor der Kiste hocken bemerkbar Oo
Nachdem es das letzte mal Probleme mit dem Insert gab, macht nun ein Update Probleme.
Ich bekomme von einem REST-Service im JSON-Format eine ganze Reihe an Daten. Diese sollen Vorhandene Datensätze in meiner Datenbank teilweise updaten.
Code:
public void setDetails(JSONArray jsonArray) {
int timestamp = 0;
String sql = null;
String spaltenName = null;
String uuid = null;
String schluessel = null, value = null;
dbConn = db.getWritableDatabase();
try {
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject details = jsonArray.getJSONObject(i);
value = details.getString("value");
timestamp = details.getInt("timestamp");
JSONObject detailsPK = details.getJSONObject("detailsPK");
uuid = detailsPK.getString("uuid");
schluessel = detailsPK.getString("schluessel");
if(schluessel.equals("power")) spaltenName = DetailsTbl.POWER;
else if(schluessel.equals("State")) spaltenName = DetailsTbl.STATE;
else if(schluessel.equals("Phase")) spaltenName = DetailsTbl.PHASE;
else if(schluessel.equals("Cooking Function")) spaltenName = DetailsTbl.FUNCTION;
else if(schluessel.equals("Temperature")) spaltenName = DetailsTbl.TEMP;
else spaltenName = null;
Log.d(TAG, "schluessel: " + schluessel);
Log.d(TAG, "value: " + value);
Log.d(TAG, "uuid: " + uuid);
Log.d(TAG, "timestamp: " + timestamp);
Log.d(TAG, "spaltenName: " + spaltenName);
if(spaltenName == null) {
sql = null;
} else {
sql = "UPDATE " + DetailsTbl.TABLE_NAME + " " +
"SET " + spaltenName + " = '" + value + "' , " + DetailsTbl.TIMESTAMP + " = '" + timestamp + "' " +
"WHERE " + DetailsTbl.UUID + " = '" + uuid + "'";
Log.d(TAG, "sql: " + sql);
Log.d(TAG, "*************************");
dbConn.execSQL(sql);
}
}
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
Die Log-Ausgabe für zwei Schleifendurchläufe sieht so aus:
Code:
schluessel: power
value: 4.0
uuid: ec27d88e-378c-4fb0-8749-b174902a2e28
timestamp: 1297965132
spaltenName: power
sql: UPDATE details SET power = '4.0' , timestamp = '1297965132' WHERE uuid = 'ec27d88e-378c-4fb0-8749-b174902a2e28'
*************************
schluessel: power
value: 0.0
uuid: ab9519db-7a14-4e43-ac3a-ade723802194
timestamp: 1297965132
spaltenName: power
sql: UPDATE details SET power = '0.0' , timestamp = '1297965132' WHERE uuid = 'ab9519db-7a14-4e43-ac3a-ade723802194'
*************************
Wenn ich das SQL-Stmt. aus dem Log kopiere, und in der Konsole einfüge, funktionierts!
Hab's auch schon mit ContentValues und update(...) versucht - selbes Ergebnis...
Irgendjemand eine Idee woran das liegt und was ich dagegen tun könnte?
Vielen Dank schon mal für eure Hilfe!
VG
Zuletzt bearbeitet: