Hi oldwarrior,
der Fehler im Code mit dem ContentValues ist der gleiche wie mit dem Array du wandelst es in einen String um.
Vielleicht macht das hier die Sache deutlicher:
//Das
String sqlStr = ""+ cv;
//ist das gleiche wie das hier
String sqlStr = cv.toString();
und genauso mit dem Array:
int[] arr = {1,2,3,4,5,6};
//Das
String strArray = ""+ arr;
//ist das gleiche wie das hier
String strArray = arr.toString();
so was du aber möchtest ist den Inhalt des Arrays bzw. der ContenValue in die Datenbank übertragen nicht das Objekt als String.
In den Links kannst du sehen das die Klasse SQLiteDatabase eine Methode bereitstellt die es ermöglich den Inhalt einer Zeile zu verändern(SQL Update). Diese erhält laut Doku den Tabellenname, den geänderten Inhalt (ContentValue), wo es geändert werden soll und unter welcher Bedingung.
Vielleicht zeigt dieses Beispiel die ganze Sache ein wenig besser:
//normaler SQL-Befahl
UPDATE routen
SET start = ’Berlin’
WHERE _id = 123;
//das gleiche mittels Android
ContentValues werte =
new ContentValues();
werte.put(
"start", "Berlin");
db.update(
"routen", werte,
"_id=?",
new String[] {"123"});
Alles anzeigen
Beispiel stammt aus Android -Grundlagen und Programmierung von Arno Becker und Marcus Pant
So nun das ganz mit deinem Problem:
//db ist ein Objekt der Klasse SQLiteDatabase
//Methode: public int update (String table, ContentValues values, String whereClause, String[] whereArgs)
byte[] photo = baos.toByteArray();
ContentValues cv = new ContentValues();
cv.put("unterschrift", photo);
db.update(MAMActivity.MY_DB_OELSPUR_TABLE,
cv,
"aktiver_datensatz = ?",
new String[]{
"1"
});
Alles anzeigen
mfg Titus