1. Lauda, 26.01.2012 #1
    Lauda

    Lauda Threadstarter Neuer Benutzer

    Hallo,
    habe ein Problem mit dem im Titel beschriebenen Thema. Ich frage eine bisher leere Tabelle ab. Die Activity die aufgerufen wird, soll demnach eine leere Liste anzeigen, allerdings stürtzt die Anwendung beim ausführen der App ab.

    XML:

    <ListView
    android:id="@android:id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"

    />
    <TextView
    android:id="@+android:id/empty"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/tx_data_database_empty"

    />

    ListActivity:

    package niklaskasper.TrainLog.Basics;

    import niklaskasper.TrainLog.Daten.DatabaseManager;
    import android.app.ListActivity;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;
    import android.widget.Toast;

    public class TrainingSchedule extends ListActivity {

    private SQLiteDatabase sDatabase;
    private DatabaseManager sHelper;


    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.trainingschedule);
    sHelper = new DatabaseManager(this);


    }



    @Override
    protected void onPause() {
    sDatabase.close();
    Toast.makeText(this, getResources().getString(R.string.tx_database_close), Toast.LENGTH_SHORT).show();
    super.onPause();
    }



    @Override
    protected void onResume() {
    super.onResume();
    sDatabase = sHelper.getReadableDatabase();
    Toast.makeText(this, getResources().getString(R.string.tx_database_open), Toast.LENGTH_SHORT).show();


    Cursor scheduleCursor = sDatabase.query("trainingSchedules", new String[]{
    "_id","name"},null,null,null,null,null);

    this.startManagingCursor(scheduleCursor);

    String[] columns = new String[] {"_id"};
    int[] to = new int[] { android.R.id.text1 };

    SimpleCursorAdapter scheduleAdapter =
    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, scheduleCursor, columns, to);

    this.setListAdapter(scheduleAdapter);

    }



    public void back(final View view){
    startActivity(new Intent(this, MainActivity.class));
    sDatabase.close();
    Toast.makeText(this, getResources().getString(R.string.tx_database_close), Toast.LENGTH_SHORT).show();
    finish();
    }


    }

    Ich finde den Fehler leider nicht. Habe mir schon verschiedene Tutorials zu dem Thema durchgelesen, aber ich sehe den Fehler nicht.
    Dazu ist zu sagen, das die Anwendung nicht abbricht, wenn ich diesen Teil auskommentiere:

    SimpleCursorAdapter scheduleAdapter =
    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, scheduleCursor, columns, to);

    this.setListAdapter(scheduleAdapter);

    Gruß
    Lauda
     
    Zuletzt bearbeitet: 26.01.2012
  2. swordi, 26.01.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    wenns einen absturz gibt, warum postet dann die meldung nicht hier rein ? => logcat
     
  3. Lauda, 26.01.2012 #3
    Lauda

    Lauda Threadstarter Neuer Benutzer

    01-27 13:26:28.718: E/AndroidRuntime(313): at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84)
    01-27 13:26:28.718: E/AndroidRuntime(313): at niklaskasper.TrainLog.Basics.TrainingSchedule.onResume(TrainingSchedule.java:56)
    01-27 13:26:28.718: E/AndroidRuntime(313): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
    01-27 13:26:28.718: E/AndroidRuntime(313): at android.app.Activity.performResume(Activity.java:3823)
    01-27 13:26:28.718: E/AndroidRuntime(313): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
    01-27 13:26:28.718: E/AndroidRuntime(313): ... 12 more
     
  4. swordi, 26.01.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    hmm da gibts doch sicher mehr als den kleinen Ausschnitt...
     
  5. Lauda, 26.01.2012 #5
    Lauda

    Lauda Threadstarter Neuer Benutzer

    01-27 14:20:06.668: I/Database(308): sqlite returned: error code = 1, msg = no such column: _id
    01-27 14:20:06.688: D/AndroidRuntime(308): Shutting down VM
    01-27 14:20:06.698: W/dalvikvm(308): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    01-27 14:20:06.768: E/AndroidRuntime(308): FATAL EXCEPTION: main
    01-27 14:20:06.768: E/AndroidRuntime(308): java.lang.RuntimeException: Unable to resume activity {niklaskasper.TrainLog.Basics/niklaskasper.TrainLog.Basics.TrainingSchedule}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, name FROM trainingSchedules
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.os.Handler.dispatchMessage(Handler.java:99)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.os.Looper.loop(Looper.java:123)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.main(ActivityThread.java:4627)
    01-27 14:20:06.768: E/AndroidRuntime(308): at java.lang.reflect.Method.invokeNative(Native Method)
    01-27 14:20:06.768: E/AndroidRuntime(308): at java.lang.reflect.Method.invoke(Method.java:521)
    01-27 14:20:06.768: E/AndroidRuntime(308): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    01-27 14:20:06.768: E/AndroidRuntime(308): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    01-27 14:20:06.768: E/AndroidRuntime(308): at dalvik.system.NativeStart.main(Native Method)
    01-27 14:20:06.768: E/AndroidRuntime(308): Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, name FROM trainingSchedules
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1229)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1184)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1264)
    01-27 14:20:06.768: E/AndroidRuntime(308): at niklaskasper.TrainLog.Basics.TrainingSchedule.onResume(TrainingSchedule.java:46)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.Activity.performResume(Activity.java:3823)
    01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
    01-27 14:20:06.768: E/AndroidRuntime(308): ... 12 more
    01-27 14:20:09.820: I/Process(308): Sending signal. PID: 308 SIG: 9

    DatabaseManager:

    public class DatabaseManager extends SQLiteOpenHelper {

    private static final String DB_NAME = "trainLog.db";
    private static final int DB_VERSION = 1;

    private static final String TRAINING_SCHEDULES_CREATE =
    "CREATE TABLE trainingSchedules (" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
    "name TEXT NOT NULL,"+
    "startDate TEXT,"+
    "endDate TEXT"+
    ")";

    public DatabaseManager(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL(TRAINING_SCHEDULES_CREATE);

    }

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


    }

    }
     
  6. Lauda, 27.01.2012 #6
    Lauda

    Lauda Threadstarter Neuer Benutzer

    Push
     
  7. swordi, 27.01.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    so,

    die fehlermeldung sagt, "no such column _id"

    da liegt es mal nahe, dass ihm die spalte _id fehlt.

    da du _id ja jetzt in deinem sql create statement hast, bleibt die frage offen, ob das schon immer so war?

    ich vermute mal nicht und du hast es nachträglich hinzugefügt, die app aber nicht komplett neu installiert ( das create statement wird nur beim erstmaligen erstellen ausgeführt - danach müsstest du über das onUpgrade die tabellenstruktur mittels alter table statement ändern )
     
    Lauda gefällt das.
  8. Lauda, 27.01.2012 #8
    Lauda

    Lauda Threadstarter Neuer Benutzer

    Vielen Dank. Ich werde deinen Vorschlag später testen und mich ggf. nochmal melden.
    Gruß
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[ERLEDIGT] Drawer mit scrollbarem Listview Android App Entwicklung 27.03.2017
ListView fix am unteren Bildschirmrand ausgeben Android App Entwicklung 01.03.2017
Auswahl mehrerer RadioButton in einem TextView ausgeben Android App Entwicklung 23.02.2017
ProgressBar in ListView Android App Entwicklung 03.01.2017
ListView Element an eine Datenbank senden Android App Entwicklung 04.12.2016
ListView Items verknüpfen Android App Entwicklung 06.10.2016
AlertDialog Listview mit ContextMenu Android App Entwicklung 01.10.2016
Android Listview Search Filter Android App Entwicklung 03.09.2016
Du betrachtest das Thema "DBquery in ListView ausgeben" im Forum "Android App Entwicklung",