# Daten einer Tabelle vergleichen und ggs neuen Wert einfügen



## Spr3ng (31. Jan 2010)

Hallo,

ich habe eine MySQL Datenbank mit Usernamen.

Wenn ein neuer Name eingegeben wird würde ich gerne eine Abfrage machen ob der Name in der DB schon existiert und falls nicht soll dieser reingeschrieben werden. Wie mache ich das?


----------



## nickname (31. Jan 2010)

hi, versuche es mal so

```
- ignorieren von bereits vorhandenen Daten in der DB. 
Wurden in die exportieren Liste weitere Daten eingefügt, können die alten Daten beim importieren ignoriert werden:

	LOAD DATA INFILE 'data.txt' IGNORE INTO TABLE tbl_name
 	 FIELDS TERMINATED BY ',' ENCLOSED BY '"'
	  LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
```

gruß nickname


----------



## Spr3ng (31. Jan 2010)

Das hilft mir leider wenig.

Ich denke ich muss das irgendwie mit Hilfe von Result Set machen aber leider weiß ich nicht wie.


----------



## madboy (31. Jan 2010)

Ich denke nicht, dass Spr3ng eine Datei importieren will sondern eher so was:

```
select count(*) from users where username='Mustermann';
```
Abfragen, ob 1 zurück kommt. Falls ja, ist er schon drin, falls nein:

```
insert into users (..., username) values (..., 'Mustermann');
```

Alternativ: einfügen, egal ob schon was drin steht mit replace into ...


----------



## Spr3ng (1. Feb 2010)

Vielen Dank für die Hilfestellung, allerdings funktioniert es immer noch nicht.

Mein code sieht momentan so aus:


```
rs = stmt.executeQuery("SELECT count(*) FROM user WHERE user_name='"+sender+"'");
			if ( rs != null) {
				
				System.out.println("Name schon in der Datenbank: " + sender);
			
}else{
				
				stmt.executeUpdate("INSERT INTO user SET user_name = '"+sender+"'");			
			}
```

So schreibt er aber niemals einen namen in die DB


----------



## ARadauer (1. Feb 2010)

war blödsinn... hab das query oben nicht genau gelesen...


----------



## ARadauer (1. Feb 2010)

besser


```
ResultSet rs = null;
      int anzahl = 0;
      if(rs.next()){
         anzahl = rs.getInt(1);
      }
```

und Java ist auch eine Insel – 20 Datenbankmanagement mit JDBC druchlesen...


----------



## madboy (1. Feb 2010)

Außerdem SQL ? Wikipedia oder ähnliche Seite durchlesen (oder schauen, was sich zwischen deinem und meinem INSERT-Statement unterscheidet).

Und: Exceptions immer ausgeben lassen, da steht bestimmt auch drin, was schief geht


----------



## Gast2 (1. Feb 2010)

Du kannst auch einfach den INSERT machen wenn du einen vernünftigen Index auf der Spalte hast. Solltest du eine Duplicate Key Violation bekommen und das löst eine Exception aus und du weißt das es den Namen schon gab 

Wenn du keinen Index hast geht das natürlich nicht.


----------

