# SQL-Statement



## JonnieWalker (8. Apr 2010)

Hallo Leute bitte um schnelle Hilfe
ist auch nur eine kleinigkeit.

Mein Statement hier soll mir meine Liste nach Wortlänge und Anfangsbuchstabe ausgeben.
Es kommt diese Exception :"java.lang.NullPointerException".
Der Fehler kann nur im Statement liegen, weil er mir die Wortlänge ausgibt aber nicht nach Anfangsbuchstabe.

Wo ist mein Fehler im Statement:


```
eigAnzahl = FensterFilter.tfEingWorter.getText();
 eigBuchst = FensterFilter.tfBuchstabe.getText();
            [COLOR="Red"]daten = anweisung.executeQuery("SELECT word FROM words WHERE len(word)> "+eigAnzahl+" And word like "+eigBuchst+"%");[/COLOR]
```

Ich denke mal das die Anführungszeichen falsch sind.
Danke.


----------



## SlaterB (8. Apr 2010)

das ist immer so leicht und doch wird es falsch gemacht,
dein Quellcode ist doch zweitrangig, wichtig ist allein, was als SQL am Ende gesendet wird,

schreibe

```
String sql = "SELECT word FROM words WHERE len(word)> "+eigAnzahl+" And word like "+eigBuchst+"%";
System.out.println("sql: "+sql);
execute sql..
```
und poste hier was als SQL rauskommt, nicht den Code mit Variablen unbekannten Inhalts, aus denen es zusammengebaut wird

und wenn du dann SQL hast, der zu einem Fehler führt, am besten in einem richtigen SQL-Tool testen

--------

denkbarer Fehler:
schlecht: where x like Montag%
gut: where x like 'Montag%'

--------

eine NullPointerException deutet allgemein auf etwas anderes hin, anweisung == null oder so


----------



## JonnieWalker (8. Apr 2010)

```
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Falsche Syntax in der N?he von '%'.
```
das ist die Fehlermeldung.
hat jemand ne Idee.?


----------



## SlaterB (8. Apr 2010)

schlecht: where x like Montag%
gut: where x like 'Montag%'


----------



## JonnieWalker (8. Apr 2010)

```
daten = anweisung.executeQuery("SELECT word FROM words WHERE len(word)> "+eigAnzahl+" AND word LIKE "+eigBuchst+'%'+"");
```
so gehts auch nicht:S
ich hasse diese SQl-Fehler in Jav???:La


----------



## homer65 (8. Apr 2010)

Übrigens kann man bei sowas besser ein PreparedStatement benutzen.


----------



## mvitz (8. Apr 2010)

labi hat gesagt.:


> ```
> daten = anweisung.executeQuery("SELECT word FROM words WHERE len(word)> "+eigAnzahl+" AND word LIKE "+eigBuchst+'%'+"");
> ```
> so gehts auch nicht:S
> ich hasse diese SQl-Fehler in Jav???:La



Da hapert es aber schon am einfachen abschreiben des Tipps...

versuch mal:

```
daten = anweisung.executeQuery("SELECT word FROM words WHERE len(word)> "+eigAnzahl+" AND word LIKE '"+eigBuchst+"%'");
```


----------



## SlaterB (8. Apr 2010)

@labi

??
lasse doch Java erstmal außen vor und übe normales SQL

ich schrieb schon


> schlecht: where x like Montag%
> gut: where x like 'Montag%'



nun versuchst du anscheinend
where x like Montag'%'
das kann doch keinen Sinn machen

der Inhalt der Variablen eigBuchst ist nach wie vor unbekannt, siehe meine erste Antwort,
ganz unnötig baust du Fehler und Unklarheiten ein, ärgerlich


----------



## JonnieWalker (8. Apr 2010)

ja qsl allein kann ich sehr gut keine sorge
aber trozdem danke:toll:


----------



## fastjack (8. Apr 2010)

Kommentiere mal execute aus und gibt diese Zeile an :


```
System.out.println("SELECT word FROM words WHERE len(word)> "+eigAnzahl+" And word like "+eigBuchst+"%");
```

Dann poste das SQL, was in der Konsole ausgegeben wird.


----------



## Sonecc (8. Apr 2010)

das es tatsächlich doch noch menschen gibt, die dem helfen ...


----------

