| |||||||
Das Thema "DBquery in ListView ausgeben" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer Benutzer Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
| 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) |
| | |
| | #2 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
wenns einen absturz gibt, warum postet dann die meldung nicht hier rein ? => logcat
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| | #3 (permalink) |
| Neuer Benutzer Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
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 |
| | |
| | #4 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
hmm da gibts doch sicher mehr als den kleinen Ausschnitt...
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| | #5 (permalink) |
| Neuer Benutzer Registriert seit: 26.01.2012
Beiträge: 5
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
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) { } } |
| | |
| | #7 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
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 ) |
| | |
| Folgender Benutzer bedankt sich bei swordi für diesen Beitrag: | Lauda (27.01.2012) |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| 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 |