SQLite an bestimmter Stelle einfügen

  • Hey,


    ich bin relativ neu in der Entwicklung und befasse mich zurzeit mit SQLite.


    Ich habe eine app, die mir beim klick auf einen button mit einem AsyncTask im hintergrund daten an eine MySQL-Datenbank bzw an ein php-script sendet, was soweit auch problemlos funktioniert.
    Gleichzeitig möchte ich aber nun auch einen SQLite-Eintrag setzen.


    Ich habe dafür eine SQLiteAdapter.java erstellt (bzw einem Tutorial entnommen :) )
    Diese sieht so aus: http://nopaste.info/c7b665aefb.html


    Nun möchte ich in die Datenbank eintragen.
    ich habe dazu meine MainActivity.java bei der ich nach
    public class MainActivity extends Activity
    ein
    private SQLiteAdapter mySQLiteAdapter;
    eingefügt habe. In meinem Verständnis, stelle ich somit eine Verbindung zu der Adapter-Java-Datei her.


    ich möchte nun mit


    mySQLiteAdapter = new SQLiteAdapter(this);

    Java
    mySQLiteAdapter.openToWrite();      mySQLiteAdapter.deleteAll();
          mySQLiteAdapter.insert("test");          mySQLiteAdapter.close();


    etwas in meine Datenbank posten.
    Normalerweise funktioniert das auch, solange ich im onCreate() bleibe.


    gehe ich aber nun in onPostExecute() rein, wird mir
    new SQLiteAdapter(this);
    rot unterstrichen.

    Zitat

    The constructor SQLiteAdapter(reg.send) is undefined.

    Klar ist mir, dass er undefiniert ist, nur verstehe ich nicht, wieso, da ich ihn ja oben definiert habe.


    Hier:
    http://nopaste.info/c77a746da2.html


    in Zeile 96 ist mir ab new alles rot unterstrichen.


    Ich denke, der Fehler liegt darin, dass mir nicht klar ist, wo ich etwas definiere und wo ich es dann nutzen kann.
    Ich dachte mit "private" kann ich in allen Unterklassen darauf zugreifen.


    Ich hoffe sehr, dass ich genügend Einblick in mein Problem geben konnte, damit mir bald geholfen werden kann :D


    Gerne, nehme ich auch Links zu passenden Themen an, doch würde ich mir eine Lösungshilfe in keinem konkreten Fall wünschen.

  • Ich habe es zwar nicht ganz verstanden aber ich vermute einmal, das es an dem "this" liegen könnte.....


    Tausche das this einfach einmal durch ein getApplicationContext() aus.....


    new SQLiteAdapter(this); --> new SQLiteAdapter(getApplicationContext());

  • Hi philvorwaerts,


    wie Colt schon sagte es liegt am "this".


    Dein Problem ist das du das Falsche verwendest.
    Du verwendest den Verweis auf die Klasse "send".
    Brachen tust du aber den Verweis der Klasse "reg".
    Lösung:


    In diesem Tutorial kannst du es noch ein bissel ausführlicher sehen:
    Beispiel: RSS Feed Laden


    mfg Titus


    p.s. "send" und "reg" sind Klassen deshalb schreibt man sie groß.

  • hey, vielen Dank für die Antworten, das hat mir sehr geholfen.


    was ich jetzt noch wissen möchte...
    ich der Main.xml, die beim starten der app geöffnet wird, möchte ich einen bestimmten button ausblenden, wenn ein bestimmter eintrag in der SQLite datanbank existiert.


    Dazu habe ich nun in der Klasse Main wieder oben "public SQLiteAdapter mySQLiteAdapter;" um ihn einzubinden.
    nun kann ich ja im onCreate mit this arbeiten, richtig?


    als nächstes habe ich:

    Java
    mySQLiteAdapter = new SQLiteAdapter(this);	     mySQLiteAdapter.openToRead();
    	     Cursor cursor = mySQLiteAdapter.queueAll();	     startManagingCursor(cursor);



    nur weiß ich nun nicht weiter.
    ich möchte, wenn KEY_PHONE existiert, dass ein Button nicht angezeigt wird.


    http://nopaste.info/77ca8f4c05.html



    soweit der code - der unterste button, soll ausgeblendet werden.

  • Hi philvorwaerts,


    füg doch deinen Adapter einfach ne methode hinzu die als Rückgabe wert ein boolean hat.
    Und innerhalb dieses Methode führst du einen Query auf deinen Datenbestand aus.
    Dann nur noch den Cursor durch sehen und entscheiden ob der Wert drin ist oder nicht.


    Mfg Titus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!