SQLite Update Datensatz

  • Antworten:1
Stefan B.
  • Forum-Beiträge: 2

14.04.2013, 21:22:14 via Website

Hallo,
ich beschäftige mich seit einigen Tagen mit der Android Entwicklung.
Nun bin ich beim Thema Datenbanken (SQLite) und habe hier ein Problem, an dem ich mir noch die Zähne ausbeisse.
Wäre schön, wenn mir jemand helfen könnte. Ich vermute es ist nur eine Kleinigkeit und ich sehe den Wald vor lauter Bäumen nicht.

Ich möchte einen Datensatz updaten, leider ohne Erfolg. Ich bekomme in LogCat immer die Meldung:
java.lang.IllegalStateException: Invalid tables at andorid.database.sqlite.SQLiteDatabase.findEditTable

Ich habe schon 2 Varianten versucht mit dem gleichen Ergebnis.

So sieht der Code aus:

1//Auszug aus SQLiteDemo.java
2/**Check ob noch Datensatz offen:**/
3 String sql = "SELECT _id FROM freunde WHERE datensatz_vollstaendig='0'";
4 dbZugriff = new DBZugriff(this, "geburtstage.dat", sql);
5 cursor = dbZugriff.erzeugeListViewCursor();
6 int anzahl = cursor.getCount();
7 cursor.moveToFirst();
8
9 /**Wenn Datensatz offen, dann auf dieser ID ein Update machen; datensatz_vollstaendig auf 1 setzen**/
10 if(anzahl != 0)
11 {
12 int id = cursor.getInt(0);
13
14 //Variante 1
15 String sql_update = "UPDATE freunde SET datensatz_vollstaendig='1' WHERE _id=" + id;
16 dbZugriff = new DBZugriff(this, "geburtstage.dat", sql_update);
17 //=> java.lang.IllegalStateException: Invalid tables at andorid.database.sqlite.SQLiteDatabase.findEditTable
18
19 //Variante 2
20 //Datensatz datensatz = new Datensatz(id, "", "", null, null, "", "1");
21 //dbZugriff.aktualisiereDatensatz(datensatz);
22 //=> java.lang.IllegalStateException: Invalid tables at andorid.database.sqlite.SQLiteDatabase.findEditTable
23 }
24...


1//Auszug aus DBZugriff.java
2public class DBZugriff extends SQLiteOpenHelper {
3
4 private SQLiteDatabase db;
5 private String tabellenSQL;
6 private String tabelle;
7
8 /**
9 * Konstruktor
10 * @param activity: aufrufende Activity
11 * @param dbName: Name der Datenbank (wenn nicht vorhanden, dann wird sie neu erstellt)
12 * @param sql: SQL-Kommando zum Erzeugen der gewünschten Tabelle (oder null bei Öffnen
13 * einer vorhandenen Datenbank)
14 */
15 public DBZugriff(Context activity, String dbName, String tabellenSQL) {
16 super(activity, dbName, null, 1);
17 this.tabellenSQL = tabellenSQL;
18 bestimmeTabelle();
19 db = this.getWritableDatabase();
20 }
21
22 /** Aus dem Tabellen-Anlage-SQL den Namen der Tabelle extrahieren
23 *
24 */
25 private void bestimmeTabelle() {
26 String sql = tabellenSQL.toUpperCase();
27 StringTokenizer tokenizer = new StringTokenizer(sql);
28
29 // den Tabellennamen suchen
30 while(tokenizer.hasMoreTokens()) {
31 String token = tokenizer.nextToken();
32
33 if(token.equals("TABLE")) {
34 tabelle = tokenizer.nextToken();
35 break;
36 }
37 }
38 }
39
40 /**
41 * Liefert Cursor zum Zugriff auf alle Einträge, alphabetisch geordnet nach Spalte "Name"
42 * @return
43 */
44 public Cursor erzeugeListViewCursor() {
45 String[] spalten = new String[]{"_id", "name", "vorname", "geburtsdatum", "datensatz_vollstaendig"};
46 return db.query(tabelle, spalten, null, null, null, null, "name");
47 }
48}

Antworten