Sqlite problem beim ansprechen der Datensätze

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sqlite problem beim ansprechen der Datensätze

    Hallo Zusammen,

    beim Entwickeln meines Apps bin ich auf folgendes Problem gestoßen:

    Ich spreche eine selbst erstellte Sqlite Datenbank an um relevante Datensätze auf dem iPod Touch anzuzeigen.

    Problem:
    Einige Datensätze können nicht aus der Datenbank geholt werden obwohl der Datensatz vorhanden ist(Korrektheit bereits geprüft).
    Statt des Datensatzes wird NULL zurück gegeben.
    Vermutung/Eindruck:
    Die Datensätze, die geholt werden können, enthalten keine Sonderzeichen bzw. deutschen Umlaute.
    Sonderzeichen/Umlaute können nicht korrekt interpretiert werden.

    Frage:
    Kann meine Vermutung der Grund für das Problem sein?
    Wenn ja, wie kann ich das Problem beheben?
    Wenn nein, was kann das Problem sein?
  • Die DB wird über das Terminal erstellt.
    Hierbei spreche ich die sqlite3 library an, um die DB zu erstellen.
    Anschließend arbeite ich mit den gängigen SQL- Statements um die Tabelle zu erstellen bzw. mit Daten zu füllen(CREATE TABLE..,INSERT...,)

    Auffällig ist das sobald die sqlite3 library geladen wurde im Terminal keine Umlaute eingegeben werden können.

    Ich glaube das mein problem mit der Zeichenkodierung zu tun hat.
    Nach besten wissen ist überall UTF- 8 eingestellt.

    Beispiel: Das Wort "Jörg" aus spalte x zeile y wird mit Jrg in der Command Line zurück gegeben.

    Gruß
    jDeveloper

    PS: Danke im vorraus für die Hilfe(n)
  • Wenn ich interaktiv in der sqlite3 Konsole die Befehle ausführe, dann hakt es mit den Umlauten. Das habe ich gerade nachvollziehen können. Aber wenn ich die Befehle in ein Shellscript verpacke, dann klappt es auch mit den Umlauten. Das Skript "sqlite.sh":

    Quellcode

    1. #!/usr/bin/env bash
    2. sqlite3 test.db "create table test (id int primary key, name text)"
    3. sqlite3 test.db "insert into test values (1, \"Jörg\")"
    4. sqlite3 test.db "select * from test"
    gibt mir auf der Konsole aus:

    Quellcode

    1. $ ./sqlite.sh
    2. 1|Jörg

    Viele Grüße
    Christian
  • Hallo Christian,

    ich habe das mal so ausprobiert, aber das Terminal nimmt beim eingeben der Umlaute die Umlaute bereits nicht.
    (Fehler von mir hatte vorher gesagt das die Umlaute in der Command line nicht ausgegeben werden.)

    Beispiel: ich gebe Jörg ein -> es wird nur Jrg geschrieben.

    So erstelle ich die DB im Terminal:
    sqlite3 test.sqlite
    CREATE TABLE test('pk' INTEGER PRIMARY KEY,'name' text);
    INSERT INTO test VALUES(1, Jörg);


    Mit dem SqliteBrowser klappt es. Habe aber dann das nächste Problem ich muss mehrere Datensätze eingeben.
    Habe die entsprechende INSERT Statements schon (1500 datensätzte).

    Problem: Wen ich die Statements in den "Sql String" bereich kopiere und dann die query ausführen lasse wird nur das erste Insert Statement genommen alle anderen werden ignoriert.
    Ist das ein Bug?


    Gruß
    jDeveloper
  • Original von jDeveloper
    Hallo Christian,

    ich habe das mal so ausprobiert, aber das Terminal nimmt beim eingeben der Umlaute die Umlaute bereits nicht.
    (Fehler von mir hatte vorher gesagt das die Umlaute in der Command line nicht ausgegeben werden.)

    Beispiel: ich gebe Jörg ein -> es wird nur Jrg geschrieben.

    So erstelle ich die DB im Terminal:
    sqlite3 test.sqlite
    CREATE TABLE test('pk' INTEGER PRIMARY KEY,'name' text);
    INSERT INTO test VALUES(1, Jörg);


    Mit dem SqliteBrowser klappt es. Habe aber dann das nächste Problem ich muss mehrere Datensätze eingeben.
    Habe die entsprechende INSERT Statements schon (1500 datensätzte).

    Problem: Wen ich die Statements in den "Sql String" bereich kopiere und dann die query ausführen lasse wird nur das erste Insert Statement genommen alle anderen werden ignoriert.

    Gruß
    jDeveloper


    stell mal die encoding des terminals auf UTF8
  • Original von jDeveloper
    Wo mache ich das bzw. wie mache ich das?

    Mein Ansatz war
    -> Einstellungen-> Codierung -> standard wiederherstellen(war aber alles ordnungsgemäß eingestellt)

    Gruß
    jDeveloper

    PS: Habe gerade erst angefangen überhaupt Software zu entwickln, daher diese "Anfänger" Frage


    Einstellungen -> "Einstellungen"-Tab -> "Erweitert"-UnterTab -> Zeichen-Codierung (ganz unten)