Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Datenbank column existiert angeblich nicht

Das Thema "Datenbank column existiert angeblich nicht" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 04.01.2012, 13:07   #1 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Frage Datenbank column existiert angeblich nicht

Hey,

ich bin gerade dabei ein Haushaltsbuch zu schreiben.

In meiner StartseiteActivity will ich dazu zu Testzwecken einen Eintrag in eine Datenbank machen. Dies hab ich mir gedacht kann ich in der onCreate Methode machen. Wenn es einmal geklappt hat kommt der Source Code für den manuellen Eintrag dort wieder raus.



Hier mein Quellcode:
Code:
package micka.haushaltsbuch;

import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;

public class Startseiteactivity extends Activity {
    final static String MY_DB_NAME = "FinanzenDB";
    final static String MY_DB_TABLE = "eintraege";
    final static String tag="ensacom"; 
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SQLiteDatabase myDB = null;
        try {
            myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
            myDB.execSQL("CREATE TABLE IF NOT EXISTS tabellen"
                    + " (_id integer primary key autoincrement,"
                    + " tabellenname text not null)"
                    + ";");
            myDB.execSQL("INSERT INTO tabellen (tabellenname) "
                    +"VALUES('eintraege');");
        } finally {
             if (myDB != null)
                  myDB.close();
        }
        onCreateDBAndDBTabled();
        setContentView(R.layout.startseitelayout);
    }

    /** Erzeugt Menüeintrag beenden **/
    public static final int beenden_ID = Menu.FIRST;
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        menu.add(0, beenden_ID, Menu.NONE, "beenden");
        return super.onCreateOptionsMenu(menu);
    }
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch(item.getItemId())
        {
        case beenden_ID: 
            finish();

        default:
            return super.onOptionsItemSelected(item);
        }
    }
    //ButtonFunktionen
    public void onClickEintragHinzufuegen(final View sfNormal) 
    {
        final Intent i = new Intent(this, EintragHinzufuegenActivity.class);
        startActivity(i);
    }
    public void onClickEintraegeAnzeigen(final View sfNormal) 
    {
        final Intent i = new Intent(this, TabellenAnzeigenActivity.class);
        startActivity(i);
    }
    /** Datenbank und Tabellen erstellen wenn noch nicht vorhanden */
    private void onCreateDBAndDBTabled()
    {
        SQLiteDatabase myDB = null;
        try {
            myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
            myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE
                    + " (_id integer primary key autoincrement,"
                    + " day integer(2), month integer(2),"
                    + " year integer(4), wofuer text not null,"
                    + " betrag real)"
                    +";");
        } finally {
             if (myDB != null)
                  myDB.close();
        }
    }
}
In meiner onCreate Methode öffne oder erstelle ich meine Datenbank tabellen mit den Attributen _id und tabellenname.
Direkt danach will ich einen Eintrag machen. Dabei kommen Exceptions

hier mein LogCat:
Zitat:
01-04 11:57:15.234: E/Database(188): Failure 1 (table tabellen has no column named tabellenname) on 0x122128 when preparing 'INSERT INTO tabellen (tabellenname) VALUES('eintraege');'.
01-04 11:57:15.254: D/AndroidRuntime(188): Shutting down VM
01-04 11:57:15.274: W/dalvikvm(188): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
01-04 11:57:15.274: E/AndroidRuntime(188): Uncaught handler: thread main exiting due to uncaught exception
01-04 11:57:15.324: E/AndroidRuntime(188): java.lang.RuntimeException: Unable to start activity ComponentInfo{micka.haushaltsbuch/micka.haushaltsbuch.Startseiteactivity}: android.database.sqlite.SQLiteException: table tabellen has no column named tabellenname: INSERT INTO tabellen (tabellenname) VALUES('eintraege');
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2496)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2512)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.access$2200(ActivityThr ead.java:119)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1863)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.os.Handler.dispatchMessage(Handler.java:99 )
01-04 11:57:15.324: E/AndroidRuntime(188): at android.os.Looper.loop(Looper.java:123)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.main(ActivityThread.jav a:4363)
01-04 11:57:15.324: E/AndroidRuntime(188): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 11:57:15.324: E/AndroidRuntime(188): at java.lang.reflect.Method.invoke(Method.java:521)
01-04 11:57:15.324: E/AndroidRuntime(188): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:860)
01-04 11:57:15.324: E/AndroidRuntime(188): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:618)
01-04 11:57:15.324: E/AndroidRuntime(188): at dalvik.system.NativeStart.main(Native Method)
01-04 11:57:15.324: E/AndroidRuntime(188): Caused by: android.database.sqlite.SQLiteException: table tabellen has no column named tabellenname: INSERT INTO tabellen (tabellenname) VALUES('eintraege');
01-04 11:57:15.324: E/AndroidRuntime(188): at android.database.sqlite.SQLiteDatabase.native_exec SQL(Native Method)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.database.sqlite.SQLiteDatabase.execSQL(SQL iteDatabase.java:1610)
01-04 11:57:15.324: E/AndroidRuntime(188): at micka.haushaltsbuch.Startseiteactivity.onCreate(St artseiteactivity.java:28)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1047)
01-04 11:57:15.324: E/AndroidRuntime(188): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2459)
01-04 11:57:15.324: E/AndroidRuntime(188): ... 11 more
Micka ist offline   Mit Zitat antworten
Alt 04.01.2012, 13:49   #2 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

hmm die tabelle wird nur genau einmal erzeugt. wenn du später dann eine spalte im code hinzufügst, musst du die app komplett neu installieren, damit das möglich ist ( oder eben die tabelle über ein alter table statement erweitern)

ist nur ne vermutung, dass das dein problem ist.
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Alt 04.01.2012, 13:54   #3 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

vielleicht ist es interessant die Struktur vom Rest der App zu kennen. Es gibt eine Activity zum hinzufügen von Einträgen die funktioniert auch soweit. Die einträge werden dann in eine beliebige anzugebene Tabelle der Datenbank eingetragen.
zum testen habe ich die tabelle "eintraege" der Datenbank "FinanzenDB" gewählt.

Wenn ich nun die Einträge anzeigen will will ich das der User erstmal eine Auswahl der existierenden Tabellen gezeigt kriegt und sich dann für eine Tabelle entscheidet. Die Methode zum anlegen neuer Tabellen habe ich noch nicht implementiert.

Deshalb möchte ich testweise diese eine tabelle "eintraege" in die Datenbank eintragen. Später wird es eine eigene Activity geben bzw in einem headerLayout oberhalb der angezeigten Tabellen soll es die Möglichkeit geben eine neue Tabelle anzulegen wenn keine der existierenden gewünscht ist.
Micka ist offline   Mit Zitat antworten
Alt 04.01.2012, 14:22   #4 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

@ Swordi

Die Tabelle tabellen soll nur diese eine Spalte haben und auch nie erweitert werden. Sinn ist es nur hier die Strings MY_DB_TABLE auszulagern damit man später in einer anderen Activity auf alle existierenden tabellen zugreifen kann.
Micka ist offline   Mit Zitat antworten
Alt 04.01.2012, 14:51   #5 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

hast versucht mal die app zu deinstallieren und nochmal zu installieren?

dann musst du ins detail rein debuggen. sonst wirds wohl schwer.

btw: pms helfen nicht dabei schneller eine antwort zu bekommen
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei swordi für diesen Beitrag:
Micka (04.01.2012)
Alt 04.01.2012, 14:56   #6 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

wird die App nicht jedesmal von Eclipse neu installiert?
Micka ist offline   Mit Zitat antworten
Alt 04.01.2012, 15:10   #7 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

cool danke....nun ist der Fehler weg.
Micka ist offline   Mit Zitat antworten
Alt 04.01.2012, 16:14   #8 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

die app wird von eclipse nur upgedated nicht komplett neu installiert.

danke button befindet sich rechts unten
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei swordi für diesen Beitrag:
Micka (04.01.2012)
Alt 04.01.2012, 21:10   #9 (permalink)
Android Guru
 
Benutzerbild von Fr4gg0r

Modell: Samsung Galaxy S (I9000)

Registriert seit: 21.12.2009
Beiträge: 2.572
Abgegebene Danke: 76
Erhielt 506 Danke für 295 Beiträge
Standard AW: Datenbank column existiert angeblich nicht

n schönen "no such column" fehler hab ich momentan auch...
Scheint aber eine Eigenheit der Contacts db zu sein..

folgender Code

Code:
ContentResolver resolver = context.getContentResolver();
Uri uri = ContactsContract.StatusUpdates.CONTENT_URI;
String[] columns = new String[]{ ContactsContract.StatusUpdates.STATUS };
String where = ContactsContract.StatusUpdates.IM_HANDLE+"=?";
Cursor lastStatus = resolver.query(uri, columns, where, new String[]{clickedContact}, null);
führt zu dieser Meldung..
01-04 20:59:31.092: E/AndroidRuntime(10619): Caused by: android.database.sqlite.SQLiteException: no such column: im_handle: , while compiling: SELECT status FROM view_data data LEFT OUTER JOIN status_updates ON (status_updates.status_update_data_id=data._id) WHERE ((im_handle=?))

Ändere ich die Projektion, läufts

Code:
 
String[] columns = new String[]{ ContactsContract.StatusUpdates.PRESENCE };
Dabei sollte doch alleine die Uri bestimmen, welche Tabelle abgefragt wird..
Laut ContactsContract.StatusUpdates | Android Developers müsste das doch funktionieren. :s

Muss wohl eine "Optimierung" sein..
Mit
Code:
String[] columns = new String[]{ ContactsContract.StatusUpdates.PRESENCE, ContactsContract.StatusUpdates.STATUS };
gehts natürlich.

Geändert von Fr4gg0r (04.01.2012 um 21:25 Uhr)
Fr4gg0r ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Fehler bei Standardbrowser: error on line 14 at column 53: xmlParseEntityRef: no name Anita84 Samsung Galaxy S (I9000) Forum 6 09.11.2011 10:43
Mehre Daten in SQL-Datenbank| einzelne Zeile aus Datenbank löschen Nivel Android App Entwicklung 17 23.07.2011 13:41
SQlite : Datenbank verschlüsselt oder keine gültige Datenbank RED-BARON Android App Entwicklung 0 07.04.2011 11:20
/system/bin/su existiert nicht? MisterD Root / Hacking / Modding für Motorola Milestone 8 21.11.2010 22:07
SMS löschen die nicht existiert! Zwa Komma Dreizehn Samsung Galaxy Spica (I5700) Forum 0 18.09.2010 18:31




Du liest gerade: "Datenbank column existiert angeblich nicht" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.