# Problem beim Schreiben eines Dateipfads in MySQL-DB



## Guest (29. Aug 2007)

Hallo,
ich habe da ein kleines Problem in meinem Programm. Unter anderem speichere ich den Pfad einer Datei in eine Tabelle meiner My-SQL Datenbank. Hierzu benutze ich einen String wie z.b. c:\foo\bar.java

Mein String in Java erkennt den Pfad auch einwandfrei, allerdings wenn ich ihn in die DB schreibe (in ein VARCHAR Feld) verschwinden die '\'. Dies hängt wohl damit zusammen, dass die Datenbank diese als Steuerzeichen erkennt. gibt es da einen Weg dies zu umgehen ?

Mit Dank im Voraus,
Christian


----------



## DaKo (30. Aug 2007)

versuch mal c:/foo/bar.java


----------



## Guest (30. Aug 2007)

Hi,
wie jetzt ?
Der Pfadname wird aus einem JFileChooser Objekt ausgelesen, ist also keine direkte benutzereingabe.
Ich habe zwar versucht durch 

```
pfadString.replace('\\','/');
```
die zeichen auszutauschen, aber da spielt java nicht so ganz mit.....

Gibts noch andere Vorschläge ?


----------



## DaKo (30. Aug 2007)

pfadString.replace*All*


----------



## Guest (30. Aug 2007)

habe ich versucht mit 


```
bild.replaceAll("\\", "/");
```

Allerdings bekomme ich da folgende Fehlermeldung:

 java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\

Ich hab das Gefühl, dass der Backslash -obwohl bei einem System.out.println() in der Konsole reichtig angezeigt- gar nicht in dem String vorhanden ist. Kann das sein ?


----------



## DaKo (30. Aug 2007)

replaceAll("\\\\","/")

Der '\' ist sowaohl bei Strings als auch bei RegEx ein Sonderzeichen. D.h. du musst den \ doppeln, damit RegEx ihn als \ erkennt und dann musst du die beiden \ doppeln, damit String sie erkennt


----------



## Guest (30. Aug 2007)

hmm ja ok hab ich grad verpeilt. mit "\\\\" bekomme ich auch keinen ParseError mehr, allerdings "verschluckt" es die Backslashs immer noch in der Datenbank. Kann das was damit zu tun haben, dass ich den Pfad mit


```
imgLoc=jFileChooser.getSelectedFile().toString();
```

auslese ?


----------



## DaKo (30. Aug 2007)

Anonymous hat gesagt.:
			
		

> allerdings "verschluckt" es die Backslashs immer noch in der Datenbank.



Es sollten doch gar keine \ mehr da sein :?:

Lass dir den Pfad mal nach dem replaceAll ausgeben und schau mal was drin steht.


----------



## Guest (30. Aug 2007)

hmm ja es "sollten" keine mehr enthalten sein 

ich hab mal eben dieses hier ausprobiert:


```
String test = "C:\\test\\foo\\bar.java";
		System.out.println(test);
		test.replaceAll("\\\\", "@");
		System.out.println(test);
```

und rausgekommen ist das 

C:\test\foo\bar.java
C:\test\foo\bar.java


----------



## Guest (30. Aug 2007)

ach Mist, in dem Moment wo ichs abgeschickt hab ist mir ein Licht aufgegangen...

Ich bin irgendwie davon ausgegangen, dass replaceAll() auf das String Objekt angewendet wird. Tut es aber nicht, sondern man muss es sich selbst dann nochmal zuweisen. Sorry


----------

