SQL-Problem: Einlesen in Spinner geht nicht mehr

  • Antworten:5
  • Bentwortet
Ludwig H.
  • Forum-Beiträge: 3.256

24.05.2011, 19:04:57 via Website

Hi,

ich hab schon wieder ein SQL Problem :(
Und zwar hab ich die ganze Zeit schon mit dieser Methode die Datensätze in einen Spinner gelesen:
1public void readIntoSpinner()
2 {
3 try {
4 myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
5 Cursor myCursor = myDB.rawQuery("SELECT _id, provider FROM " + MY_DB_TABLE + ";", null);
6 startManagingCursor(myCursor);
7
8 Spinner Spinner = (Spinner)findViewById(R.id.spinner);
9 myCursor.moveToFirst();
10
11 SimpleCursorAdapter spinadapter = new SimpleCursorAdapter(
12 this,
13 android.R.layout.simple_spinner_item,
14 myCursor,
15 new String[] { "provider" },
16 new int[] {android.R.id.text1});
17
18 spinadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
19 Spinner.setAdapter(spinadapter);
20
21 Spinner.setPrompt(this.getResources().getString(R.string.provider));
22 Spinner.setAdapter(spinadapter);
23 myCursor.close();
24 } finally {
25
26 if (myDB != null)
27 myDB.close();
28 }
29 }

Das Problem: Die ganze Zeit hat es funktioniert, jetzt aber nicht mehr!
Ich habe nur die Datenbank gelöscht, da nur Müll drin gestanden war. Dann hat die App eine neue erstellt und ich habe neue Datensätze eingefügt. Aber der Spinner bleibt leer!
Bin echt verzweifelt, ich weiß nicht an was es liegen könnte.

Im Log sehe ich auch, dass diese Methode durchgeführt wird.

Noch ein paar Codeschnipsel:
Datenbank erstellen sofern noch nicht getan:
1private void onCreateDBAndDBTabled()
2 {
3 SQLiteDatabase myDB = null;
4 try {
5 myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
6 myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE + " (_id integer primary key autoincrement, provider TEXT);");
7 } finally {
8 if (myDB != null)
9 myDB.close();
10 }
11 }
Datensatz einfügen:
1myDB = openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
2myDB.execSQL("INSERT INTO "+MY_DB_TABLE+" (provider) VALUES ('" + provider2.getText().toString() + "');");

Danke schonmal

edit: Wenn ich mit dem Editor in die Datenbank reinschaue sehe ich lauter hyrogyphen und die Datensätze zwischendrin die ich eingefügt habe, müsste also korrekt eingefügt sein.

— geändert am 24.05.2011, 19:07:03

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

24.05.2011, 21:19:56 via Website

Oh, stimmt, hab ich ganz übersehen. Daran lags aber nicht :(

Antworten
Markus B.
  • Forum-Beiträge: 636

24.05.2011, 21:26:15 via Website

Admin Service Limited
Was'n das?

1Spinner Spinner = ...

Gruß
Harald

Hi,
das ist die Deklaration einer Variable, welche mit einem Großbuchstaben beginnt :)
Ist unschön sorgt aber für keine Probleme.

Zum eigentlichen Problem:
Wenn du nichts am Code verändert hast, wird dieser auch jetzt noch funktionieren. Alternativ hast du unbewusst etwas verändert und deshalb funktioniert nichts mehr :)
Fang doch mal vorne an um das Problem zu lokalisieren. Lade dir mal doch mal Sqliteman herunter. Dort kannst du dann deine sqllite-db importieren und dann führst du mal den gleichen Query wie im code aus. Wenn das Ergebnis der Query dann nicht leer ist weiß du das es am Android Code liegen muss.

Gruß,
Markus

— geändert am 24.05.2011, 21:27:43

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

26.05.2011, 20:30:40 via Website

@Markus B.

War schon klar. Ich hatte aber erst die Methodenaufrufe wie folgenden gesehen, mich 5 mal am Kopf gekratzt und gewundert seit wann das statische Methoden sind ;-)

1Spinner.setAdapter(spinadapter);

Gruß
Harald

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

26.05.2011, 20:33:08 via App

Hab es übrigens hinbekommen, nachdem ich den Code neu geschrieben hatte. Muss aber nochmal schauen, an was es genau gelegen hat :D

Antworten