Problem beim Schreiben eines Dateipfads in MySQL-DB

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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
 
Hi,
wie jetzt ?
Der Pfadname wird aus einem JFileChooser Objekt ausgelesen, ist also keine direkte benutzereingabe.
Ich habe zwar versucht durch
Code:
pfadString.replace('\\','/');
die zeichen auszutauschen, aber da spielt java nicht so ganz mit.....

Gibts noch andere Vorschläge ?
 
habe ich versucht mit

Code:
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 ?
 
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 😉
 
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

Code:
imgLoc=jFileChooser.getSelectedFile().toString();

auslese ?
 
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.
 
hmm ja es "sollten" keine mehr enthalten sein 😉

ich hab mal eben dieses hier ausprobiert:

Code:
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
 
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 🙁
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben