# SQL Abfrage und Equals



## OnDemand (11. Nov 2014)

Hallo zusammen,

ich möchte in einer Tabelle nach einem Wert suchen, wenn dieser Wert noch nicht enthalten ist, soll er in die DB geschrieben werden.

Leider klappt das mit folgendem Code nicht so ganz, kann mir jemand nen Schubs in die richtige Richtung geben?

Beim Methodenaufruf übergebe ich die zu überprüfende Artikelnummer...



```
public static void insertArtikelnummer(String artikelNummerToPost) throws SQLException {
		Statement statementRead = conn.createStatement();
		String query = ("SELECT artikelnummer FROM artikel where artikelnummer ='" + artikelNummerToPost +"'");
		ResultSet result = statementRead.executeQuery(query);

	
		while (result.next()) {
			if (result.getString(1).equals(artikelNummerToPost)) {

				System.out.println("Bereits vorhanden");
			} else {
				System.out.println(artikelNummerToPost + " fehlt..wird geschrieben");
			}
		}

	}
```

Irgendwie muss ich prüfen ob result null oder so zurückgibt oder?


----------



## Joose (12. Nov 2014)

NicoDeluxe hat gesagt.:


> Leider klappt das mit folgendem Code nicht so ganz, kann mir jemand nen Schubs in die richtige Richtung geben?



Dann musst du uns auch verraten was nicht klappt 
"klappt nicht" ist keine valide Fehlerbeschreibung die weiterhilft, welche Exceptions kommen? Wie verhält sich das Programm? Was sollte es stattdessen machen?
http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html


Abgesehen davon ist dieser Code etwas unnötig:
Du führst ein SELECT aus auf eine bestimmte Datenzeile und willst nur die artikelnummer zurückgeben (welche in der WHERE Bedingung auch abgefragt wird).
Sprich das Resultset wird entweder *eine *Zeile oder *keine *Zeile enthalten, je nachdem weißt du dann ob es diese Nummer schon gibt


----------



## OnDemand (12. Nov 2014)

Ja du hast recht, hab da etwas zu sehr um die Ecke gedacht. 

Kannst du mir auch verraten, warum diese Methode keine Daten in die DB schreibt??
Ich weiß einfach nicht warum es leer bleibt, wenn ich mir die Werte mit Sysout ausgeben lasse, stimmt alles. auch wenn ich eine andere Spalte in der DB nuzte, werden die Daten korrekt in die DB geschrieben..

Stimmt hier was mit der Spalte nicht?!?! Hab schon VARCHAR(45) LONGTEXT etc probiert.. Die Felder sind einfach leer, nicht mal NULL


```
public static void insertBeschreibungKurz(String artikelNummer, String beschreibungKurz) throws SQLException {
		Statement statement = conn.createStatement();
		statement.executeUpdate("Update artikel SET beschreibung_kurz='" + beschreibungKurz + "' WHERE artikelnummer='" + artikelNummer + "'");
	}
```


----------



## Joose (12. Nov 2014)

Neues Problem/neue Frage --> neues Thema bitte! 

Beachte bitte Punkt 2 in http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html


----------



## fehlerfinder (12. Nov 2014)

Hiho,

wenn ich dich richtig verstanden habe, willst du diesen Befehl ja nur dann ausführen, wenn deine Artikelnummer noch nicht in der DB enthalten ist. Richtig?

Dein Methodenname passt schon - insertBeschreibungKurz.  Aber dein Statement passt nicht dazu. Update führt ein Update durch, daher der Name ;-) - wenn kein Datensatz mit der gegebenen Artikelnummer vorhanden ist, wird natürlich auch nichts aktualisiert. Leuchtet ja ein. In deinem Fall wäre ein SQL "insert"-statement das Richtige.


----------

