# sqlite select



## tritronic (2. Dez 2015)

Hallo zusammen,

ich habe mal wieder ein kleines Problem:

1) ich habe eine Tabelle ABLAGE in Java mit verschiedenen Feldern erzeugt. Unter anderem das Feld eingetragenDatum TEXT (Beispielwert: 2015,12,02)

2) Mit Java erzeuge ich das Tagesdatum und schreibe dieses in einen String
// ErmittlungTagesdatum
DateTimeFormatter datumsFormat = DateTimeFormatter._ofPattern_("yyyy,MM,dd");
LocalDate tagesdatum= LocalDate._now_();
String heute= tagesdatum.format(datumsFormat);

3) wenn ich mit
System.out.println("Heute = " + heute);
eine Ausgabe auf der Console mache erhalte ich
selectdatum 2015,12,02

4) mit dem select in Java
"SELECT eingetragenDatum FROM ABLAGE;";
erhalte ich alle Werte.

5)  mit dem select in Java
"SELECT eingetragenDatum FROM ABLAGE WHERE eingetragenDatum = '" + heute + ";";
erhalte ich keine Werte

Woran kann das liegen?

Vielen Dank für die kommenden Antworten


----------



## Joose (2. Dez 2015)

Weil dir ein schließendes ' fehlt? Damit ist die SQL Syntax falsch und das Statement kann nicht richtig ausgeführt werden -> sollte aber eine Exception liefern.


----------



## tritronic (2. Dez 2015)

sorry das ' fehlte nur hier im Text. Mein Fehler. Ist wohl rausgerutsch, als ich einige unwichtige Dinge entfernt habe

5) mit dem select in Java
"SELECT eingetragenDatum FROM ABLAGE WHERE eingetragenDatum = '" + heute + "';";
erhalte ich keine Werte


----------



## Thallius (2. Dez 2015)

Zunächst mal, bitte benutze für das Datum das ISO8601 Format. Das macht die Sache später wesentlich einfacher.

Dann ist das Semikolon hinter dem Query überflüssig. Lass das mal weg. Ich glaube aber nicht das es daran liegt, da es einfach ignoriert werden dürfte.

Sicher, dass heute keine führenden oder folgenden White Spaces hat?

Achja, und wenn 

System.out.println("Heute = " + heute);

zu dieser Ausgabe führt...

selectdatum 2015,12,02

dann bist du ein MAgier oder sowas...

Gruß

Claus


----------



## tritronic (2. Dez 2015)

Grummelt vor sich hin. Das selectdatum 2015,12,02 war die falsche Zeile

heute 2015,12,02

Das Semikolon kann tatsächlich weg. Ändert aber nichts an meinem Problem.

Da ich heute mit dem DateTimeFormatter datumsFormat = DateTimeFormatter._ofPattern_("yyyy,MM,dd"); erzeugt habe, sollte es keine White Spaces haben. Wie könnte ich die notfalls entfernen?


----------



## Joose (2. Dez 2015)

Mit der Methode "trim()" von der Klasse String.


----------



## Thallius (2. Dez 2015)

Lass Dir am besten das heute mal direkt vor dem query ausgeben. Ich kann mir nicht vorstellen das der Query nicht funktioniert wenn das heute korrekt ist.


----------



## tritronic (2. Dez 2015)

trim() eingebaut:

// ErmittlungTagesdatum
DateTimeFormatter datumsFormat = DateTimeFormatter._ofPattern_("yyyy,MM,dd");
LocalDate tagesdatum= LocalDate._now_();
String heute= tagesdatum.format(datumsFormat).trim();

Ausgabe heute auf Console mit
System.*out*.println("heute=XX" + heute+ "XX");
(die XX, um zu sehen, ob davor oder danach noch etwas kommt)
=> heute=XX2015,12,02XX


----------



## Thallius (2. Dez 2015)

Es gibt aber auch einen Eintrag in der Datenbank zu heute oder?


----------



## tritronic (2. Dez 2015)

hier ein Screenshot des Datenbankfeldes


----------



## Thallius (2. Dez 2015)

probier mal bitte 

WHERE eingetragenDatum LIKE "2015%"

und wenn das was ausgibt, dann erweitere es auf 2015, dann 2015,12 etc und schau ab wann es nicht mehr geht.

Gruß

Claus


----------



## Joose (2. Dez 2015)

Hol dir mal das SQLite Studio, das ist ein DatabaseExplorer für SQLite.
Verbinde dich zu deiner SQLite DB und versuche mal im Studio das Statement abzusetzen und kontrolliere das Ergebnis.


----------



## tritronic (3. Dez 2015)

so. nach langem hin und her, läuft das ding plötzlich... jetzt fragt mich aber bitte nicht, welche Änderung das bewirkt hat. wahrscheinlich die Summe eurer Ratschläge, für die ich euch allen Danke.

Viele Grüße

Jens


----------

