2011-01-13 9 views
3

Die SQLite C-Bibliothek verfügt über eine Methode sqlite3_column_decltype(). Aber ich kann keinen Ort finden, wo die Android SQLite API diese Methode verfügbar macht. Gibt es eine Möglichkeit, den deklarierten Typ einer Spalte ohne Ausführen von SQL zu erhalten (d. H. Kann ich die Verwendung von PRAGMA table_info vermeiden)?Erhalten Sie die Affinität einer SQLite-Spalte unter Android

Ich hätte AbstractWindowedCursor.isBlob() verwenden können, aber es sagt, dass es auch true zurückgibt, wenn das Feld NULL ist. Ich brauche etwas, das mir einen Wert garantiert, der dem angegebenen Typ der Spalte entspricht.

Antwort

0

Ich fragte mich kürzlich dasselbe. Der nächste, den ich gefunden habe, ist, dass die Klasse CursorWindow die Methoden isString, usw. hat. Aber es ist nicht klar, ob dies auf Affinität basiert; Die Schnittstelle zu diesen Methoden benötigt sowohl Zeilen- als auch Spalteninformationen.

+1

Dies scheint Ihnen den Typ des Werts und nicht den Typ der Spalte zu geben. – dan04

+0

Ja, ich habe auch angenommen, dass es sich um den Typ des Wertes handelt. Siehe meine [verwandte Frage] (http://stackoverflow.com/questions/4676056/in-android-is-abstractwindowedcursor-isblob-guaranteed-to-be-correct). –

+0

@Neil: Ich habe deine andere Frage gesehen, nachdem ich meine Antwort gepostet habe. (Ich verpasse auch irgendwie Ihren Hinweis auf 'AbstractWindowedCursor.isBlob'; tut mir leid.) Für was es wert ist, ging ich mit dem SQLite-Fluss und verwende Strings für jede Spalte auf der SQLite-Ebene, auch wenn der Datentyp Double, Long ist usw. Aber ich verwende keine Blobs, und ich kann sehen, wie das die Sache verkomplizieren würde. –

Verwandte Themen