SQLite : Insert

R

RED-BARON

Fortgeschrittenes Mitglied
19
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
 
Poste den Code, dann kann man das auch besser nachvollziehen.
 
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:
@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
 
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.
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.012
swa00
swa00
M
Antworten
5
Aufrufe
1.077
markusk73
M
Zurück
Oben Unten