2010-12-10 14 views
0

ich meine Datenbankabfrage zur Zeit wie so eingerichtet haben:Wie kann ich diese Abfrage in eine RawQuery konvertieren?

bearbeiten, durch die Art und Weise meine Variablen (_ID, CAT_ITEM und BUDGET_AMOUNT) actualy enthalten genau den gleichen Text und die Formatierung, wie sie geschrieben sind, dumm, ich weiß, aber sowieso das sollte nicht das Problem sein

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, }; 
private String orderBy = _ID + " ASC"; 
private String whereIn = "IN_OUT='in'"; 

Cursor cursor = db.query(CAT_BUD_TAB, from, whereIn, null, null, null, orderBy); 

welche genau das tut, was ich will es tun, aber ich wollte stattdessen einen rawQuery versuchen, mit (nur den Fall von Abfrageanweisungen zu erhalten und testen sie es aus, auch Ich würde nicht so viele String-Variablen benötigen).

Hier ist, was ich kam mit:

private String incomeQuery = "SELECT _ID, CAT_ITEM, BUDGET_AMOUNT FROM CAT_BUD_TAB WHERE IN_OUT=’in’"; 
Cursor cursor = db.rawQuery(incomeQuery, null); 

Dies ist jedoch nicht funktioniert (ich die SQLException keine solche Spalte erhalten), so ich versuche, herauszufinden, was der Unterschied ist, ich meine, nur gibt es etwas stimmt nicht mit meiner Aussage, aber keine Ahnung was. Kann mir jemand einen Rat geben? Dank

Antwort

1

aus dem Code sieht es aus wie _ID, CAT_ITEM, BUDGET_AMOUNT und CAT_BUD_TAB String Felder sind. Sind ihre Werte die gleichen wie die Feldnamen?

Ihre einzelnen Anführungszeichen unterscheiden sich auch zwischen den beiden Abfragen.

Nicht mit Ihrem Problem verbunden, aber Sie müssen auch ORDER BY _ID ASC am Ende der SQL hinzufügen, um die Ergebnisreihenfolge zu replizieren.

+0

Rechts sorry ich vergaß zu erwähnen, dass die Variablen, die Sie oben erwähnt sind Strings, aber sie infact enthalten genau den gleichen Text und Formatierung (String CAT_ITEM = "CAT_ITEM"; und so weiter. Aber danke, dass ich darauf hingewiesen habe, ich hätte etwas sagen sollen. Wie auch immer, du hast Recht! Ich hatte nicht bemerkt, dass die einzelnen Qoutes anders aussahen! (ich kopierte die Arbeitsanleitung von einem Guide) Danke, dass du es aufgezeigt hast, jetzt, wenn ich nur herausfinden kann, welche Taste ich auf meiner Tastatur drücken soll, wird das Problem gelöst :) Danke! – Holly

1

In Ihrem ersten Beispiel, haben Sie folgende Möglichkeiten:

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, }; 

Wenn dies richtig ist, bedeutet dies, dass Sie drei Variablen _ ID, CAT_ITEM und BUDGET_AMOUNT mit dem Namen der Spalten in deinem Tisch. Das gleiche gilt für , die wahrscheinlich den Namen Ihrer Tabelle enthält.

String incomeQuery = "SELECT " + _ID + ", " + CAT_ITEM + ", " + BUDGET_AMOUNT + " FROM " + CAT_BUD_TAB + " WHERE IN_OUT=’in’"; 

Und es gesagt hat gerade:

Für Ihre RAW-Abfrage korrekt sein, es sollte dann wie folgt geschrieben werden, um dies keine schöne Art und Weise ist eine Zeichenfolge zu komponieren. Es sollte stattdessen mit einem StringBuilder getan werden. Ich habe es einfach so gemacht.

+0

Oh danke, ich hätte das erwähnen sollen, aber die drei Variablen sind eigentlich genau die gleichen wie ihre Inhalte! (Ich weiß, albern.) Aber das bedeutet, dass das wahrscheinlich kein Problem ist. Danke für die Antwort trotzdem! Und ich werde in StringBuilder – Holly

+0

@Holly schauen: überhaupt nicht dumm, Variablen mit dem gleichen Wert wie ihr Name zu haben - nur sicher sein, die Variable die ganze Zeit zu verwenden;) Zurück zu Ihrer Frage: Sie sollten dann ein wenig posten mehr von dem Fehler. Die 'SQLException nolche Spalte 'sagt wahrscheinlich ein bisschen mehr (hoffentlich welche Spalte es nicht findet). – Nailuj

+0

@Holly: und noch eine Sache, die Sie tun könnten. Versuchen Sie, 'SELECT * FROM ...' zu schreiben, nur um zu sehen, dass Sie tatsächlich eine rohe Abfrage durchführen. Wenn das funktioniert, können Sie wieder versuchen, nur die benötigten Spalten zu holen. – Nailuj

Verwandte Themen