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

DBquery in ListView ausgeben

Das Thema "DBquery in ListView ausgeben" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 26.01.2012, 13:55   #1 (permalink)
Neuer Benutzer

Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard DBquery in ListView ausgeben

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_clos e), 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_clos e), 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

Geändert von Lauda (26.01.2012 um 15:24 Uhr)
Lauda ist offline   Mit Zitat antworten
Alt 26.01.2012, 14:14   #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: DBquery in ListView ausgeben

wenns einen absturz gibt, warum postet dann die meldung nicht hier rein ? => logcat
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Alt 26.01.2012, 14:26   #3 (permalink)
Neuer Benutzer

Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: DBquery in ListView ausgeben

01-27 13:26:28.718: E/AndroidRuntime(313): at android.widget.SimpleCursorAdapter.<init>(SimpleCu rsorAdapter.java:84)
01-27 13:26:28.718: E/AndroidRuntime(313): at niklaskasper.TrainLog.Basics.TrainingSchedule.onRe sume(TrainingSchedule.java:56)
01-27 13:26:28.718: E/AndroidRuntime(313): at android.app.Instrumentation.callActivityOnResume(I nstrumentation.java:1149)
01-27 13:26:28.718: E/AndroidRuntime(313): at android.app.Activity.performResume(Activity.java:3 823)
01-27 13:26:28.718: E/AndroidRuntime(313): at android.app.ActivityThread.performResumeActivity(A ctivityThread.java:3118)
01-27 13:26:28.718: E/AndroidRuntime(313): ... 12 more
Lauda ist offline   Mit Zitat antworten
Alt 26.01.2012, 14:47   #4 (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: DBquery in ListView ausgeben

hmm da gibts doch sicher mehr als den kleinen Ausschnitt...
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Alt 26.01.2012, 15:23   #5 (permalink)
Neuer Benutzer

Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: DBquery in ListView ausgeben

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(A ctivityThread.java:3128)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.handleResumeActivity(Ac tivityThread.java:3143)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2684)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.access$2300(ActivityThr ead.java:125)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread$H.handleMessage(Activit yThread.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.jav a: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$MethodAndArgsCa ller.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_c ompile(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>(S QLiteCompiledSql.java:64)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteProgram.<init>(SQLit eProgram.java:80)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQ uery.java:46)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDirectCursorDriver.q uery(SQLiteDirectCursorDriver.java:42)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.rawQueryWit hFactory(SQLiteDatabase.java:1345)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.queryWithFa ctory(SQLiteDatabase.java:1229)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.query(SQLit eDatabase.java:1184)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.database.sqlite.SQLiteDatabase.query(SQLit eDatabase.java:1264)
01-27 14:20:06.768: E/AndroidRuntime(308): at niklaskasper.TrainLog.Basics.TrainingSchedule.onRe sume(TrainingSchedule.java:46)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.Instrumentation.callActivityOnResume(I nstrumentation.java:1149)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.Activity.performResume(Activity.java:3 823)
01-27 14:20:06.768: E/AndroidRuntime(308): at android.app.ActivityThread.performResumeActivity(A ctivityThread.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) {


}

}
Lauda ist offline   Mit Zitat antworten
Alt 27.01.2012, 15:28   #6 (permalink)
Neuer Benutzer

Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: DBquery in ListView ausgeben

Push
Lauda ist offline   Mit Zitat antworten
Alt 27.01.2012, 15:49   #7 (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: DBquery in ListView ausgeben

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 )
__________________
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:
Lauda (27.01.2012)
Alt 27.01.2012, 15:52   #8 (permalink)
Neuer Benutzer

Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: DBquery in ListView ausgeben

Vielen Dank. Ich werde deinen Vorschlag später testen und mich ggf. nochmal melden.
Gruß
Lauda ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
MySQl in ListView ausgeben Viktor R Android App Entwicklung 1 24.12.2011 15:49
tv per 3,5 mm klinke ausgeben? Ratman Samsung Galaxy Tab Forum 15 07.11.2011 13:11
Text ausgeben themerx Android App Entwicklung 3 04.03.2011 12:19
listView.setChoiceMode() in einer custom ListView mr.freeze Android App Entwicklung 0 16.02.2011 09:57
2.2 als 2.1 ausgeben abbot Samsung Galaxy 3 (I5800) Forum 20 13.12.2010 11:23




Du liest gerade: "DBquery in ListView ausgeben" 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.