String Zeichen Ignorieren?

Guten Morgen,
Ist es möglich bei einem String Zeichen zu ignorieren?
Habe diese Zeile

message = („Select Top 50 Menge,“ + a + „,Prozent from " + table + " where Text like (’“ + b + „’) order by Menge DESC“);

Wobei b leider auch manchmal ein " enthält, daher schneidet Java dann schon an der Stelle ab und vollendet die Anweisung nicht.

Danke für eure Hilfe.

Gruß Basti

moin moin,

meine Antwort ist eher indirekt :wink:.
Deine Codezeile sieht mir verdächtig nach einem SQL Script aus.
Solltest du einen JDBC Treiber für die Verbindung zur Datenbank verwenden, benutze java.sql.PreparedStatements (http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Pre…).
Hier kümmert sich der Treiber automatisch um etwaige nötige Maskierungen von ‚Eingabewerten‘.
Damit können eigenhändige Tests entfallen.

Wenn in dem geschilderten Fall ein " als Wert von b enthalten ist, wird eher die Datenbank einen Fehler zurückgeben. Für Java ist der String völlig ok. Die Variable message hätte dann folgenden Wert:
[Select Top 50 Menge, aValue, Prozent from tableValue where Text like (’"’) order by Menge DESC]

mit freundlichen Grüßen
Uwe Barthel

danke für die fixe Antwort.

ich übergebe dort zum Beispiel als b = Schüler,Name,vorname=„dummy“,Klasse

aber am ende steht nur noch Schüler,Name,vorname= da!
also eher kein Fehler der Datenbank.

gruß basti

Hallo Basti,

ich glaube, der Fehler liegt bereits dort, wo du b setzt.
Wenn in einem String ein Steuerzeichen drin steht, steht es eben drin.
Man benutzt den \ als Aufhebungszeichen:

b = „Er sagte:„Hallo Welt““;

Datenbanken scheitern meist am ’ und seltener am ".
Das kannst DU in der DB mit ‚‘’ erreichen.

b = „INSERT INTO geschaefte (name) values (‚Rosi‘’‚s Welt‘)“;

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

b wird so gesetzt
b = request.getParameter(„FehlerDrop“);

und im FehlerDrop ist der Wert drin, der vom sData dort hinterlegt wurde.

ich überprüfe jetzt was vorher drin steht, sprich im sData.

aber das abschneiden passiert meiner meinung nach zu 99,8% bei der meesage zuweisung aus meinem ersten Beitrag.

danke gruß Basti

ich überprüfe jetzt was vorher drin steht, sprich im sData.

hier steht die komplette Zeichenkette drin.

ich überprüfe jetzt was vorher drin steht, sprich im sData.

hier steht die komplette Zeichenkette drin.

… und in b, steht da auch noch alles richtig drin?

wenn du dann message ausgibst, ist es falsch, oder?

Irgendwo muss doch der Wert verschwinden.

Gruß

Peter

bei der Messagezuweisung, wird es abgeschnitten.
davor ist es noch komplett. Der erkennt einfach zu früh das " und fügt nur bis dahin den Text aus b in meine Message ein.
Kann man das irgendwie vermeiden, ausser den DatenSatz zuändern?

bei der Messagezuweisung, wird es abgeschnitten.
davor ist es noch komplett. Der erkennt einfach zu früh das "
und fügt nur bis dahin den Text aus b in meine Message ein.
Kann man das irgendwie vermeiden, ausser den DatenSatz
zuändern?

Hallo,

ich habs mal bei mir auprobiert, kann dein Problem aber beim besten Willen nicht nachvollziehen:

 String a = "a";
 String table = "table";
 String b = "Schüler,Name,vorname=\"dummy\",Klasse";
 String message = ("Select Top 50 Menge," + a + ",Prozent from " + table + " where Text like ('" + b + "') order by Menge DESC");
 System.out.println(a);
 System.out.println(table);
 System.out.println(b);
 System.out.println(message);

ergibt:

a
table
Schüler,Name,vorname="dummy",Klasse
Select Top 50 Menge,a,Prozent from table where Text like ('Schüler,Name,vorname="dummy",Klasse') order by Menge DESC

Beim Zuweisen von b muss man natürlich die Backslashes setzen.

Du kannst mir ja mal das Programm schicken. (Oder besser ein funktionierendes, bzw. den Fehler reproduzierendes Fragment)

Gruß

Peter

vielen dank für deine Mühen, aber b ist ja noch komplett und erst bei der Message zuweisung schneidet er es meiner meinung nach!

ich werd wohl einen anderen weg finden müssen.
danke für eure hilfe

Hallo,

du kannst ja mal mit dem Debugger verfolgen, wo das Unglück passiert. (Einfacher ist meist, an wichtigen Stellen ein System.out.println einzubauen)

Ziel muss es sein, die Zeile zu finden, in der die Zuweisung kaputt geht.

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

die Nachricht geht kaputt, wenn ich die message zu weise!!
habe es jetzt anders gelöst, weil problem durfte nciht länger aufhalten.
Habe einfach alle " in meiner Datenbanktabelle gelöscht.
Ist zwar nicht der beste Weg, aber Fehler beseitigt.

bitte tortzdem noch eine Idee schreiben.!

Du kannst ja mal mit einer anderen Java-Version kompilieren. Vielleicht lags ja daran. Bei mir hat die Zuweisung ja super funktioniert.

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hmm ja. ich benutze die java version „1.6.0-beta2“ vllt lag es daran.

mal sehen ob ich nochmal die alte Tabelle einspiele oder ob es so schon geht!

danke für den Tip, dachte eigentlich die neuste „stable“ zu benutzen.

gruß basti

gleich feierabend und urlaub :smile:

melde mich dann erholt in 2 wochen wieder :smile: