Identifizieren des Datentyps einer Spalte in einem SQLite Android Cursor

8

Gibt es eine Möglichkeit, den Datentyp einer Spalte in einem Cursor in Android zu identifizieren? Das Cursor-Objekt verfügt über eine Reihe von Methoden, um den Spaltennamen, den Spaltenwert zu erhalten.

Ich möchte den SQLite-Datentyp der Spalte (TEXT, INTEGER) usw. herausfinden ...

Ich schreibe eine generische Funktion, um einen Cursor zu analysieren und Operationen auszuführen. Ich werde nur eine SQL-Zeichenfolge als Argument für die Funktion erhalten.

    
Arun 09.06.2011, 12:53
quelle

4 Antworten

6

In der SQLite-Dokumentation ( Ссылка ) haben Spalten in SQLite keinen Datentyp - die Werte in diesen Spalten mach das.

  

Jede Spalte in einer SQLite-Datenbank der Version 3, mit Ausnahme einer INTEGER PRIMARY KEY-Spalte, kann zum Speichern eines Werts einer beliebigen Speicherklasse verwendet werden.

Wenn Sie die API-Stufe 11 oder höher verwenden, unterstützt der Cursor getType() (siehe Ссылка ).

Wenn Sie eine frühere API-Ebene verwenden und wissen, dass alle Ergebnisse eines bestimmten Cursors aus derselben Tabelle stammen, können Sie etwas wie (ungested) tun:

%Vor%

Aber das wird (ich erwarte) scheitern, wenn der übergebene Cursor (zum Beispiel) das Ergebnis eines Aufrufs db.rawQuery () war, der zwei oder mehr Tabellen verband.

    
Nik 09.06.2011, 19:59
quelle
5

Die Antwort oder NiK, sind in Ordnung. Aber wenn deine db leer ist, stürzt dieser ab. Ich empfehle Verwendung

%Vor%     
AAP 19.02.2012 23:30
quelle
1

Sie sollten Metadaten von sqlite Database verwenden:

Ссылка

Sie erhalten dieses Element mit getMetaData () in einem ResultSet ().

Es ist also nicht die übliche Art, eine SQLite-Datenbank in Android zu verwenden, sondern die übliche JDBC-Methode:

  1. bekomme eine Verbindung (über den Treibermanager getConnection)
  2. Eine Anweisung abrufen (über connection.createStatement)
  3. erhält eine Ergebnismenge (über statement.executeQuery)
  4. Erhalte die Metadaten (über resultset.getMetaData)

Grüße, Stéphane

    
Snicolas 09.06.2011 13:01
quelle
1

Ich habe noch nicht getestet, aber versuche cursor.getType (i) zu verwenden

So:

%Vor%     
Robson 22.09.2017 14:26
quelle

Tags und Links