Database Version erhöhen....

  • Antworten:27
ECR
  • Forum-Beiträge: 72

09.08.2012, 15:12:23 via Website

Ich habe eine sqlite DB in Android, die Tabelle wird erstellt und ich kann sie über DDMS auch einsehen. Mein Problem ist wenn ich die App immer von Eclipse aus starte dann wird die Tabelle immer weiter gefüllt also, 74 Einträge->148Einträge etc. Darum würde ich es gerne so machen(auch aufgrund von späteren Aktionen), das die Tabelle ganz gelöscht wird und danach neu erstellt wird. So habe ich immer die 74 Einträge.
Ich habe bis jetzt herausgefunden das wenn ich die Databases Version erhöhe, immer die onUpgrade Methode aufgerufen wird, die sieht bei mir so aus:

1public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
2 Log.w("onUpgrade", "Hier sollte irgendwas upgradet werden");
3 Log.w("onUpgrade",String.valueOf(db.getVersion()));
4 db.execSQL("DROP TABLE IF EXISTS " + Table_Stundenplan+";");
5 onCreate(db);
6 }

Leider wird die nie aufgerufen. Ich habe in Web Beispielen gesehen (http://www.vogella.com/articles/AndroidSQLite/article.html)
Das diese Variable Database_Version immer final gesetzt wird.Und eine Final Variable kann man ja nicht erhöhen??


Meine Frage ist nun, wie und wo muss ich diese Database_Version erhöhen, damit bei jedem Start der App die DB gelöscht und neu erstellt wird?

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

09.08.2012, 15:59:13 via Website

Klar, alle machen das nach was mal in einem populären Android Buch stand. DROP im Upgrade Fall funktioniert wirklich nur in absolut unsinnigen Apps:

Achte auf die fehlenden "break" in den case Anweisungen. Das bewirkt das Durchlaufen ab dem Treffer. Damit kann eine App von jedem beliebigen Stand auf den aktuellen gebracht werden:

1// Diese Var erhoehst Du bei einer neuen Version immer um 1
2private static final int DATENBANK_VERSION = 3;
3
4@Override
5public void onUpgrade(final SQLiteDatabase sqliteDatabase, final int oldVersion, final int newVersion) {
6 switch (newVersion) {
7 case DATENBANK_VERSION:
8 switch (oldVersion) {
9 case 1:
10 upgradeFrom1To2();
11 case 2:
12 upgradeFrom2To3();
13 // ...
14 }
15
16 break;
17 }
18}
19
20private void upgradeFrom1To2() {
21 sqliteDatabase.execSQL("alter table <eineTabelle> add column <eineSpalte> integer default 0");
22}
23
24private void upgradeFrom2To3() {
25 sqliteDatabase.execSQL("alter table <eineAndereTabelle> add column <eineAndereSpalte> integer default 0");
26}
27
28// ...

— geändert am 09.08.2012, 16:00:26

Antworten
ECR
  • Forum-Beiträge: 72

09.08.2012, 17:06:26 via Website

Naja von irgendwo her muss ich es ja lernen, ob es nun ein Buch oder das Web ist ;-)

Dein Beispiel ist gut, aber es ist nicht ganz das was ich suche oder täusche ich mich. Ich möchte ja eine Tabelle jedesmal löschen. Und ich kann ja nicht im Vorfeld wissen wieviel mal jemand die Tabelle neu laden wird?

Desweiteren muss ich ja zuerst die VersionNummer änderen damit ich überhaupt in die onUpgrade () reinkommen. Wie kann ich das machen?

In deinem Beispiel änderst du die Variable DATENBANK_VERSION gar nie selber? Oder mach das Android selber NACHDEM die Methode ausgeführt wurde? o_O

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

09.08.2012, 19:47:09 via Website

Das Beispiel im Buch/Web ist falsch. Ein Upgrade ist in ganz seltenen Fällen die Kombination aus DROP/CREATE.

Siehe den Kommentar an erster Stelle meines Beispiels. Diese Variable erhöhst Du für jede neue Version Deiner Datenbank - dann erfolgt der onUpgrade Aufruf an Deinen SQLiteOpenHelper.

Android prüft diese Werte. Auszug aus der Original Methode:


1sqliteDatabase = SQLiteDatabase.openOrCreateDatabase(datenbankDatei, null);
2
3 int version = sqliteDatabase.getVersion();
4
5 if (version != DATENBANK_VERSION) {
6 sqliteDatabase.beginTransaction();
7
8 try {
9 if (version == 0) {
10 onCreate(sqliteDatabase);
11 } else {
12 onUpgrade(sqliteDatabase, version, DATENBANK_VERSION);
13 }
14
15 sqliteDatabase.setVersion(DATENBANK_VERSION);
16 sqliteDatabase.setTransactionSuccessful();
17 } finally {
18 sqliteDatabase.endTransaction();
19 }
20 }

— geändert am 09.08.2012, 19:49:52

Antworten
ECR
  • Forum-Beiträge: 72

10.08.2012, 00:53:28 via Website

Sorry Harald aber irgendwie stehe ich auf dem schlauch?!>_>

Das mit dem erhöhen der Variable ist mir klar,aber wie erhöhe ich eine Varibale welche final ist? Oder muss ich sie nicht final setzten?

Das mit dem Drop habe ich aus der API von Google, dort steht man soll onUpgrade() benutzten wann man was droppen will.

"The implementation should use this method to drop tables, add tables, or do anything else it needs to upgrade to the new schema version. "

Im Moment ist es so, das ich die App installiere sie startet ordnungsgemäss und erstellt eine DB erstellt. Nun muss ich aber die App immer 2x anklicken das sie den Download erneut anfängt. Also 1Klick,dasFenster geht auf,nichts geschieht. Dann drücke ich die Zurück Taste drücke erneut auf das App Symbol nun staret das Fenster und der Download beginnt auch.
Nun habe ich immer nur die gewünschten 74 Einträge und in der Log sehe ich das die Versionsnummer hochgezählt wird. Aber ich denke nicht das dies die Idee ist? Das würde bedeuten das jedesmal wenn jemand die App(oder später diese Funktion in der App) anklickt wird die Version um 1 erhöht? Und das alles nur damit ich die 74 Einträge behalten kann?

Das ist der Code, ich weiss das mit der Erhöhung ist noch Spagehtti-Code :-) Aber ich wollte einfach mal sehen was passiert:

1public class MainActivity extends Activity {
2
3 Activity activity = this;
4// ArrayList<Stundenplan> stundenplanList;
5 StundenplanDataSource stundenplanDataSource;
6
7 @Override
8 public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.activity_main);
11
12
13 int version = MySQLiteHelper.DataBase_Version;
14 if(!(version == 0)){
15 MySQLiteHelper.DataBase_Version = version + 1;
16 }
17
18
19 this.stundenplanDataSource = new StundenplanDataSource(this);
20
21 stundenplanDataSource.open();
22
23 getDataFromServer(); //Diese Methode startet den AsyncTask welcher als Innere Klasse implentiert ist
24
25 }


Und das ist die HelperKlasse:

1public class MySQLiteHelper extends SQLiteOpenHelper {
2
3 //Datenfelder für die Erstellung der Datenbank, sie werden hier satic erstellt
4 //damit die Spaltennamen beim Insert befehlt verwendent werden können
5 public static final String Table_Stundenplan = "Stundenplan";
6 public static final String Column_ID = "_id";
7 public static final String StartZeit = "start";
8 public static final String EndZeit = "ende";
9 public static final String AnzahlLektionen = "anzahlLektionen";
10 public static final String Klasse = "klasse";
11 public static final String ZimmerNr = "zimmerNr";
12 public static final String BezeichnungFach = "bezeichnungFach";
13
14 private static final String DataBase_Name = "Stundenplan.db";
15 public static int DataBase_Version = 1;
16
17
18 //Datenbank SQL Statement der onCreate ausgeführt wird
19 private static final String DataBase_Create = "create table "
20 + Table_Stundenplan + "("+ Column_ID+ " integer primary key autoincrement, "+ StartZeit
21 + " INTEGER, "+ EndZeit+ " INTEGER, "+ AnzahlLektionen+ " INTEGER, "
22 + Klasse+ " INTEGER, "+ ZimmerNr + " INTEGER, "+ BezeichnungFach+ " VARCHAR(100));";
23
24 //private static final String DataTable_Delete ="DROP TABLE IF EXISTS " + Table_Stundenplan+";";"
25
26
27
28 public MySQLiteHelper(Context context){
29 super(context, DataBase_Name, null, DataBase_Version);
30
31 }
32
33
34
35 /**
36 * Die Methode onCreate und onUpgrade werden von dem super Konstruktor der Klasse
37 * SQLiteOpenHelper aufgerufen
38 *
39 * @param SQLiteDatabase
40 */
41
42 @Override
43 public void onCreate(SQLiteDatabase db) {
44 //Der SQL Syntaxt wurde in "DataBase_Create" zur verwendung bereits vorbereiten
45 //db.execSQL("DROP TABLE IF EXISTS" + DataBase_Name +"."+Table_Stundenplan +";");
46 db.execSQL(DataBase_Create);
47
48 }
49
50
51
52 @Override
53 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
54 Log.w("onUpgrade", "Hier sollte irgendwas upgradete werde");
55 Log.w("onUpgrade",String.valueOf(db.getVersion()));
56 db.execSQL("DROP TABLE IF EXISTS " + Table_Stundenplan+";");
57 onCreate(db);
58
59
60 }
61}

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

10.08.2012, 07:47:30 via App

In der Activity hat das +1 nix zu suchen.

Eine neue Version Deiner App soll bei bereits beim Benutzer installierten Apps etwas an der Datenbank ändern. Dann änderst Du ja im Sourcecode an den SQL Statements und fügst neue Spalten oder Tabellen hinzu. DANN und nur dann erhöhst Du gleichzeitig mit der Hand den Wert der Variablen.

Dein Zitat aus den Docs enthält ein or. Darum gehts.

— geändert am 10.08.2012, 07:51:05

Antworten
ECR
  • Forum-Beiträge: 72

10.08.2012, 11:27:56 via Website

Ok dann werde ich das +1 aus der Activity nehmen.

Trotzdem ich möchte ja nichts an den SQL Statments ändern. Ich will ja nur das quasi vor jedem erneuten downloaden der Daten, die Tabelle gelöscht und neu erstellt wird, das ist alles. Ich weiss im Moment so nicht wo ich ansetzten soll, da im Web wirklich nicht viel zu finden ist,speziell exakt nach dem was ich suche.
Brauche ich das onUpgrade überhaupt dazu?

Ich würde das gerne automatisch ausführen lassen bei jedem erneuten Download, wo sollte die Überprüfung(welche Versionnummer) und Ausführung(DB löschen und neu füllen) statt finden? In der Sqlhelper klasse?

Welche Methode wird immer aufgerufen? Die onCreate? Oder wo kann ich prüfen lassen ob die DB bereits exisitert oder nicht?

In deinen Beispielen oben sehe ich irgendwie nicht wie du die DatabankVersion erhöhst? Und ohne erhöhung komm ich ja nicht in die onUpgradeMethode rein? Ich meine ich kann ja nicht von Hand in den Code schreiben
1int final Version =1;
und später schreibe ich
1int final Version =2;
Das muss zur automatisch zur Laufzeit selber passieren, und das wird schwierig wenn die Variable auch noch final ist!

Ich blicke im Moment nicht ganz durch :-)

Antworten
Markus B.
  • Forum-Beiträge: 636

10.08.2012, 11:45:55 via Website

Hi,

Eliseo R.
...
Ich meine ich kann ja nicht von Hand in den Code schreiben
1int final Version =1;
und später schreibe ich
1int final Version =2;
Das muss zur automatisch zur Laufzeit selber passieren, und das wird schwierig wenn die Variable auch noch final ist!

Ich blicke im Moment nicht ganz durch :-)

Genau das ist der Punkt. Bevor du die App als Update in den Store packst musst du diese bauen / testen usw. also gehst du von HAND in den Code und passt die Version an. In der Regel musst du ja auch Code schreiben, welche die Anpassungen beim Benutzer einpflegt (neue Tabelle / neue Spalte / Umbenennungen usw.). Dazu hat Harald dir oben ein Beispiele gezeigt ( upgradeFrom1To2 usw.)

Gruß,
Markus

— geändert am 10.08.2012, 11:48:51

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

10.08.2012, 12:08:08 via Website

Verdammt! <Sorry>

Wie oft soll ich das denn noch schreiben? Du erhöhst VON HAND, IM SOURCECODE die Versionsnummer der Datenbank sobald Du Änderungen an der STRUKTUR der Datenbank vorgenommen hast. Du nimmst aber keine Änderungen an der Struktur der Datenbank vor. Du willst nur bei irgendeinem Event die Datenbankinhalte löschen und wieder aufnehmen. Also bau Dir zwei Funktionen in den SQLiteOpenHelper die Du aus Deinen Activities nach dem Eintreffen des Events aufrufen kannst. Diese Funktionen leeren dann Deine Datenbank und füllen Sie wieder.

— geändert am 10.08.2012, 12:09:05

Antworten
ECR
  • Forum-Beiträge: 72

10.08.2012, 12:33:26 via Website

@Markus

Ach so ist das gemeint!! Ja das war mir so wirklich nicht bewusst!

@Harald

Immer dieser gehässigte Ton den man in deutschen Foren findet! Ich melde mich doch in einem Forum an weil ich gewisse Sachen nicht verstehe. Es ist schon schwierig genug solche Probleme nur über Texte zu lösen, für den Fragenden wie auch für den der Antworten schreibt.
Ich habe leider noch keine 8 Apps geschrieben sondern schreibe meine erste verdammte App. Vorrallem bin ich weder beleidgend noch sonst was geworden, ich habe nur nachgefragt da ich deine Antworten nicht verstanden habe da das ganze Thema für mich neu ist.

Vorallem dieser für mich im Moment sinnloser Aufbau im Android mit diesen ganzen Versionen und vorgeschrieben Methoden. Die mysql DB funktionieren ja auch ohne diese Hindernisse.
Aber ich denke ich weiss nun in welche Richtung das es geht.Ich werde mich mal um diese 2 Funktionen kümmern welche die DB leeren. In der Tat ändere ich ja nich die Struktur der DB.
Ich melde mich wieder, Danke für die Unterstüzung bis hier hin...

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

10.08.2012, 13:17:50 via Website

Einfach immer dran denken, dass auf der textuellen Ebene keine Gestik, Mimik, Tonalität zum Transport von Emotionen und Witz zur Verfügung steht!
Auch scherzhaft und vor allem neckisch gemeintes kommt so ganz schnell falsch (böse) rüber.

@Eliseo:
Der Punkt ist, dass es - einmal verinnerlicht - keine Hindernisse mehr sind, sondern willkommene Helfer.
Es muss nur einmal Klick machen und man muss es verstehen.

— geändert am 10.08.2012, 13:22:38

Antworten
Markus B.
  • Forum-Beiträge: 636

10.08.2012, 13:41:15 via Website

Harald Wilhelm
Wie hätte ich denn sonst ausdrücken sollen das ich 4 Mal das selbe erklärte - und trotzdem nie aufgab.

So alle mal ne Runde beruhigen :) Harald ist einfach mal ein Gewinn für die Community und er ist einer der kompetentesten, welche sich hier regelmäßig zu Wort melden !

Gruß,
Markus

Ps.: Unter Technikern ist der Ton halt mal etwas grober damit muss man leben!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

10.08.2012, 13:48:39 via Website

Du hast völlig Recht, Harald ist natürlich eine riesige Bereicherung hier.

Rauher Ton führt halt nur zwangsläufig zu Abwehrhaltung des Gegenübers und Verlagerung der Diskussion auf die Meta-Ebene des "wie diskutieren wir", statt sich auf das Problem zu konzentrieren. Es vergrößert also die Diskussion und die eingesetzte Zeit unnötig.

Unter dem Strich hat also keiner was davon eine sachliche Diskussion zu emotionalisieren :)

— geändert am 10.08.2012, 13:50:03

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 12:00:47 via Website

So meine lieben Talk Freunde ;-)
Hier bin ich wieder...

Ich habe nun diese lösche Funktion eingebaut. Und zwar rufe ich einfach die Methode auf:
1context.deleteDatabase("Stundenplan.db");

Dann ist alles gelöscht und ich kann sie neu erstellen. So muss ich auch nicht die Database Version erhöhen.

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 12:42:30 via Website

Naja ich weiss :bashful: Nicht sehr elegant und so. Aber ich muss mal alles zum laufen bringen. Irgendwie haben die einfache Sql Statements "Drop ....." einfach nicht gefunzt. Und für irgendwas gibt es diese Kantholz-Methode ja auch, irgendjemand muss sie ja benutzten ;-)

Ich habe hier nochmal ne sehr gute Erklärung gefunden was es mit diesen Versionen auf sich hat :) Es geht ja darum wenn die App bereits installiert ist und später eben eine andere Struktur erstellt wird.Dann muss man eben von Hand die Version erhöhen und dann wird onUpgrade aufgerufen. Da die Methode onCreate der DB nur 1x aufgerufen wird, nachher arbeitet die App immer mit dieser Version der DB oder eben sonst muss man die Version erhöhen.

http://de.wikibooks.org/wiki/Googles_Android/_Datenbankzugriffe

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

17.08.2012, 13:24:40 via Website

Und für irgendwas gibt es diese Kantholz-Methode ja auch, irgendjemand muss sie ja benutzten

Ja, das Android System selbst. Der gemeine App-Entwickler benötigt sie nicht.


Es geht ja darum wenn die App bereits installiert ist und später eben eine andere Struktur erstellt wird.Dann muss man eben von Hand die Version erhöhen [...]

Exakt das hatte ich oben geschrieben:

[...] Eine neue Version Deiner App soll bei bereits beim Benutzer installierten Apps etwas an der Datenbank ändern. Dann änderst Du ja im Sourcecode an den SQL Statements und fügst neue Spalten oder Tabellen hinzu. DANN und nur dann erhöhst Du gleichzeitig mit der Hand den Wert der Variablen. [...]

Das gilt ebenfalls wenn Du bei den installierten Apps der Benutzer Werte in der Datenbank korrigieren musst - nicht nur bei Strukturänderungen. Beispiel: Du stellst fest das Du bisher bei den Benutzern falsche Werte in die Datenbank geschrieben hast. Solche korrigierenden Eingriffe musst Du ebenfalls mit einer Erhöhung der Versionsnummer markieren. In dem dann beim ersten Start der neuen Version aufgerufenen onUpgrade führst Du dann den Korrekturlauf durch.

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 14:11:56 via Website

Harald Wilhelm
Und für irgendwas gibt es diese Kantholz-Methode ja auch, irgendjemand muss sie ja benutzten

Ja, das Android System selbst. Der gemeine App-Entwickler benötigt sie nicht.

Das heisst es müsste auch mit den SQL Statments funktionieren? Egal was ich mache den Befehl "Drop...." wird immer ausgelassen. Obwohl ich mit dem log sehe das das Programm dort "vorbeigekommen ist.


Es geht ja darum wenn die App bereits installiert ist und später eben eine andere Struktur erstellt wird.Dann muss man eben von Hand die Version erhöhen [...]

Exakt das hatte ich oben geschrieben:

Naja dort hatte ich es ja allgemein auch noch nicht verstanden ;)

[...] Eine neue Version Deiner App soll bei bereits beim Benutzer installierten Apps etwas an der Datenbank ändern. Dann änderst Du ja im Sourcecode an den SQL Statements und fügst neue Spalten oder Tabellen hinzu. DANN und nur dann erhöhst Du gleichzeitig mit der Hand den Wert der Variablen. [...]

Das gilt ebenfalls wenn Du bei den installierten Apps der Benutzer Werte in der Datenbank korrigieren musst - nicht nur bei Strukturänderungen. Beispiel: Du stellst fest das Du bisher bei den Benutzern falsche Werte in die Datenbank geschrieben hast. Solche korrigierenden Eingriffe musst Du ebenfalls mit einer Erhöhung der Versionsnummer markieren. In dem dann beim ersten Start der neuen Version aufgerufenen onUpgrade führst Du dann den Korrekturlauf durch.

Ja mit deinem Vorwissen mit dieser Struktur Sache konnte ich gezielter im Web suchen. Aber Danke für den 2, Hinweis

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 19:00:58 via Website

Ah mein Problem liegt irgendwo ganz anders. Ich kann das irgend wie nicht richtig und sauber testen. Wenn ich es von Eclipse aus starte dann wird alles neu erstellt und es funktioniert 1x. Wenn ich nun wieder von Eclipse ausstarte komme lauter SQlite insert fehler. Auch wenn ich die Applikation auf dem Emulator neuaufrufe kommen nur fehler. Das liegt daran das die onCreate ja nur 1x aufgerufen wird und nachdem 1. durchlauf sage ich am Ende "Drop Table".Das Problem ist das ich keine Oberfläche programmiert habe von der ich das alles steuern kann. Ich muss zuerst schauen wie ich das am besten mache. Bis jetzt schaue ich mit dem slqite Explorer die Daten an.

Noch ein andere Frage wenn ich von Eclipse aus eine App neu starte, wird die alte zuerst komplett deinstalliert, sprich die alte DB komplett entfernt?

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

17.08.2012, 19:11:18 via Website

Wenn ich nun wieder von Eclipse ausstarte komme lauter SQlite insert fehler.

Auch hier würde das LogCat die Begründung liefern.


Eliseo R.
Noch ein andere Frage wenn ich von Eclipse aus eine App neu starte, wird die alte zuerst komplett deinstalliert, sprich die alte DB komplett entfernt?

Nein, normalerweise nicht.


Ich kann Dir nur empfehlen ganz von vorne anzufangen. Du springst gerade vom Turm und überlegst unterwegs wie Du Wasser ins Becken bekommst.

— geändert am 17.08.2012, 19:13:12

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 19:13:21 via Website

Ja das habe ich jetzt gerade festgestellt :)

Das heisst also das bei einem neu Start von Eclipse aus die DB mit ihren Einträgen erhalten bleibt! Das hätte ich nie gedacht. Ich dachte es setzt alles neu auf. Naja das ändert einiges. Siehst du was für ein blutige Anfänger ich bin ;-)

Edit:
Aber das heisst ja das er auch nicht nochmal die OnCreate Metohde der Sqlite nochmals ausführt wenn ich es von Eclipse aus erneut starte??

— geändert am 17.08.2012, 19:17:05

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 19:20:15 via Website

[quote=Harald Wilhelm]


Ich kann Dir nur empfehlen ganz von vorne anzufangen. Du springst gerade vom Turm und überlegst unterwegs wie Du Wasser ins Becken bekommst.

Komischerweise trifft der Spruch exakt meine aktuelle Situation :) Ich denke aber mit dieser Erkenntis kann ich das ganze neu testen. Im Moment kommt es mir wie der Spruch vor "Wer misst, misst, Mist"

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

17.08.2012, 19:28:31 via Website

Eliseo R.
Ja das habe ich jetzt gerade festgestellt :)

Das heisst also das bei einem neu Start von Eclipse aus die DB mit ihren Einträgen erhalten bleibt! Das hätte ich nie gedacht. Ich dachte es setzt alles neu auf. Naja das ändert einiges. Siehst du was für ein blutige Anfänger ich bin ;-)

Edit:
Aber das heisst ja das er auch nicht nochmal die OnCreate Metohde der Sqlite nochmals ausführt wenn ich es von Eclipse aus erneut starte??

Moment, Moment!!! Bei einem richtigen Gerät wird nichts an den Daten geändert, beim Emulator ist das einstellbar.

Bitte tue Dir selbst einen Gefallen und fange bitte langsam von vorne an.

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

17.08.2012, 19:30:02 via Website

[quote=Eliseo R.]
Harald Wilhelm


Ich kann Dir nur empfehlen ganz von vorne anzufangen. Du springst gerade vom Turm und überlegst unterwegs wie Du Wasser ins Becken bekommst.

Komischerweise trifft der Spruch exakt meine aktuelle Situation :)

Und das nennt man dann Selektion in der Evolutionslehre ;-)

Antworten
ECR
  • Forum-Beiträge: 72

17.08.2012, 20:03:44 via Website

Ach ja? Ok dann stell ich das mal beim Emulator so ein das er immer zuerst alles deinstallieren soll. Ich dachte weil in der Konsole steht "Installing....." nahm ich an das er zuerst alles deinstalliert auch eben die Datenbank, was ja anscheinend nicht geschieht.

Der Witz ist ja, da wo ich nun stehe ist eben das Resultat das ich von 0 angefangen habe:-) Ich habe einige Tutorials im Web angeschaut und arbeite mit den Büchern "Android3" und "Android" von Dirk Louis. Und soo viel steht darin eben nicht über Sqlite. Wenn ich wieder von vorne Anfange bringt mir das wahrscheinlich nicht viel. Vorrallem ist eine Diplomarbeit, und mir und meinem Teamkolleg läuft ehrlich gesagt langsam die Zeit ab. Aber eben eigentlich funktioniert ja das Löschen nun. Ich habe es nur immer falsch ausgeführt da ich nicht wusste das die Daten und Datenbank erhalten bleiben. Mehr muss meine DB nun auch nicht können. Jetzt kann ich weitermachen mit anderen Android Sachen. Und eben aus Fehlern lernt man ja ;-)

— geändert am 17.08.2012, 20:05:35

Antworten