Datenbank update Daten vorher sichern

Z

zumafx

Fortgeschrittenes Mitglied
58
Moin :)

Meine App macht mittlerweile, was sie soll und ich kann Daten in der DB speichern und auslesen.
Der Übersichtlichkeit halber habe ich alle Datenbankmethoden in eine
eigene Klasse (DbMethoden) ausgelagert.
Bei Aufruf einer Methode gebe ich dann neben den Daten als Parameter

Code:
Context con,
SQLiteDatabase connection,
SQLiteOpenHelper database

mit. Soweit so gut.
Nun wollte ich beim evtl. Updaten die Daten sichern, update machen und dann die Daten wieder einfügen.

Das habe ich wie folgt versucht:

DbHandlerHelper.java
Code:
public class DbHandlerHelper extends SQLiteOpenHelper {

    private Context context;

    DbHandlerHelper(Context context) {
        super(context,
                context.getResources().getString(R.string.DATABASE_NAME),
                null,
                Integer.parseInt(context.getResources().getString(R.string.DATABASE_VERSION)));
        this.context = context;
    }


    // Tabellen erzeugen
    @Override
    public void onCreate(SQLiteDatabase db) {
        for(String sql : context.getResources().getStringArray(R.array.create_Db))
            db.execSQL(sql);
    }


    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // Alte Daten sichern
        List<DatenA> a = DbMethoden.getAlleDatenA(context, connection, database);
        List<DatenB> b = DbMethoden.getAlleDatenB(context, connection, database);

        db.execSQL("DROP TABLE IF EXISTS " + context.getResources().getString(R.string.TABLE_NAME_A));
        db.execSQL("DROP TABLE IF EXISTS " + context.getResources().getString(R.string.TABLE_NAME_B));
        onCreate(db);

        // Alte Daten wieder einlesen
        for (int i = 0; i <= a.size()-1; i++) {
            DbMethoden.addDatenAToDb(context, connection, database, a.get(i));
        }
        for (int i = 0; i <= b.size()-1; i++) {
            DbMethoden.addDatenBToDb(context, connection, database, b.get(i));
        }
    }
Mein Problem: Die Parameter connection und database, wie muss ich die benutzen ?
Ich muss irgendwie "sich selbst" übergeben ?

Ich versteh da noch nicht so wirklich, wie das abläuft in Android/Java und würde mich sehr freuen,
wenn mir jemand sagt, wie/welche Parameter ich angeben muss und
das warum wäre noch ein nettes Schmankerl dazu.

Vielen Dank
 
Hallo,
hmm so ganz verstehe ich die Frage nicht. Dein Code sieht (eigentlich) schon gut aus.. Allerdings finde ich die Namengebung absolut hinderlich^^

So hab ichs gemacht...

Code:
private final Context mContext;
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb;

  public Database open(String pwd) {
        mDb = mDbHelper.getWritableDatabase();
        return this;
    }

Löschen via:
  return mDb.delete(DATABASE_TABLE, where, null) != 0;
Updates via: 
  return mDb.update(DATABASE_TABLE, newValues, where, null) != 0;
Einfügen via:
  return mDb.insert(DATABASE_TABLE, null, initialValues);
 
  • Danke
Reaktionen: zumafx
ich konnte das bei mir nicht genauso umsetzen, aber du hast mich auf
genau die richtige Fährte gebracht ;)
im onupdate wird ja schon die db mitgereicht, da kann man die natürlich auch direkt verwenden.
Vielen Dank für das entfernen des Brettes vor meinem Kopf ;)


was meinst du mit Namensgebung hinderlich ? das DatenA und a ? die heissen im source anders, hab die nur anonymisiert.
 

Ähnliche Themen

S
Antworten
33
Aufrufe
2.726
Sempervivum
S
A
Antworten
10
Aufrufe
1.030
swa00
swa00
A
Antworten
10
Aufrufe
1.942
swa00
swa00
Zurück
Oben Unten