1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. RED-BARON, 07.01.2011 #1
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    Hallo Gemeinde, ich habe ein ??? ... Problem ! :smile:

    Die Tabelle enthält eine Spalte vom Typ C (10) - also char 10 zeichen breit

    Jetzt möchte ich die Zeichenfolge "001" in diese Spalte eintragen.

    insert into t1 (c10) values ('001')

    Beim auslesen der Tabelle enthält der Ergebnis-Cursor aber nur '1' :mad2:

    Der Fehler liegt nicht am Cursor ! Auch nicht an SQLite unter Android.

    Der Spaltenwert '1' wird mir auch vom "SQLite Control Center" so ausgegeben.

    Das gleiche Statement im "SQLite Control Center" erzeugt auch in der
    Spalte den Wert '1' !

    Frage ist nun, gibt es eine Option beim erstellen oder für SQLite selber,
    so eine Art "strict" ....

    Erstellt wurde die Tabelle mit

    Create Table t1 (c10 C(10))


    Vielen Dank fürs Lesen und evtl. Hilfestellungen zur Lösung des Problems !

    Schönes WE
     
  2. MetBo, 07.01.2011 #2
    MetBo

    MetBo Fortgeschrittenes Mitglied

    Poste den Code, dann kann man das auch besser nachvollziehen.
     
  3. Zoopa, 07.01.2011 #3
    Zoopa

    Zoopa Android-Experte

    Datatypes In SQLite Version 3

    Also den Typ C gibts nicht, sondern nur NULL, REAL, INTEGER, BLOB und TEXT. Also würde ich einfach TEXT nehmen.

    Andere Typen werden sogenannten Type Affinities zugeordnet und anhand dieser Affinities wiederum in einen der 5 oben genannten Typen konvertiert.

    Daher wird der Typ C(10) bei SQLite anhand der 5. Regel der 2.1 Determination Of Column Affinity als NUMERIC interpretiert und dann wohl zu INTEGER konvertiert. (Es steht zwar, dass es nur zu INTEGER konvertiert wird, falls das ganze ohne Verlust geschieht und wieder Rückgängig gemacht werden kann, aber vielleicht wird 001 als 1 angeschaut und daher zählt das nicht als Datenverlust?)

    Vielleicht liegt der Fehler auch einfach darin, dass du Cursor.getInt() statt Cursor.getString() verwendest?
     
    Zuletzt bearbeitet: 07.01.2011
  4. RED-BARON, 10.01.2011 #4
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    @Zoopa,
    genau das könnte das Problem sein :smile: Als Workaround hab ich
    eben nun ein Leerzeichen an meine "001" gehängt. Bei einer Ab-
    Frage wird dann auch "001 "geliefert. ein Trim() restauriert den
    Wert wieder.

    Ich untersuche das ganze aber noch mal wenn mehr Zeit ist.

    Vielen Dank, RB
     
  5. muck, 10.01.2011 #5
    muck

    muck Android-Hilfe.de Mitglied

    Wahrscheinlich möchtest Du VARCHAR(10) verwenden, dann steht auch 001 drin. Allerdings kann man sich bei SQLite VARCHAR(x) sparen da sich die Datenbank nicht dran hält sondern das Feld der tatsächlichen länge des Inhaltes anpasst. Aus diesem Grund verwendet man üblicherweise TEXT und überläßt den Rest der Datenbank.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Komplette SQLite Datenbank verschlüsseln Android App Entwicklung 19.09.2017
[OFFEN] SQLITE insert gibt negative id zurück Android App Entwicklung 18.09.2017
[ERLEDIGT] In SQLite DB auf nächsten/vorherigen Datensatz zugreifen Android App Entwicklung 23.03.2017
SQLite asynchron benutzen Android App Entwicklung 26.02.2017
SQLite - Idee 'zentrale Datenbank' theoretisch möglich (und ratsam)? Android App Entwicklung 21.02.2017
SQLite Datenbank. Was ist möglich und was nicht? Android App Entwicklung 15.11.2016
Du betrachtest das Thema "SQLite : Insert" im Forum "Android App Entwicklung",