SQL Statement mit Sonderzeichen auslesen


#1

Hey Leute, ich wollte mal eine Frage stellen ob jemand eine Idee hat!

Ich bekomme SQL Statements zum verarbeiten
[SQL]<(STRING,),(INTEGER,),(BOOLEAN,),(DECIMAL,),…>[/SQL]
und beispielsweise kann eines davon so aussehen :

[SQL]insert into tabelle ((INTEGER),(12964),(STRING),(Hs@K’ '11/13§() “vac.2007”),(DECIMAL,2.223))[/SQL]

Mein Ziel ist es jetzt diese entgegenzunehmen und die So zu Parsen das ich die so in variablen abspeichern kann :
[SQL]int i = 12964
String s = "Hs@K’ '11/13§() “vac.2007"”
double d = 2.223[/SQL]

Würde mich über ideen oder sonstiges Freuen :wink:
Wie gesagt das Problem ist das ich Komplett im String teil jedes Zeichen bekommen kann…


#2

Ich bin mir nicht sicher ob ich das richtig verstanden habe, aber schau dir mal Stored Procedures an. Da kannst du dir die Werte als Parameter übergeben lassen … und hättest diese somit nicht als kompletten String


#3

Danke, ich schaus mir mal an,

ich versuch nochmal deutlicher darzustellen was ich brauche :

Ich muss den bekommen String unterteilen. Ich kann das ganze aber nicht mit nem StringTokenizer z.b. machen, da im datenbankfeld vom Typ String auch alle Zeichen auftauchen können die es gibt, also weiß ich prinzipiel nie wann der String anfängt und wann er aufhört ^^

Prinzipiel würde ich das auf nicht lösbar einstufen :smiley: aber wie gesagt vielleicht habt ihr noch weitere tolle ideen :wink:


#4

Hmm, hast du Einfluss auf die insert-Statements? Weil wenn nicht bringt dir eigentlich auch die SP nichts (sorry, so kurz vor der Mittagspause habe ich das mit dem “bekommen” überlesen).

Brauchst du die Information vor dem Einfügen oder würde es dir danach auch reichen? Weil dann könntest du dir von der DB den letzten Eintrag zurückgeben lassen. Da könntest du dir den String dann aus dem Resultset laden.

Edit: wenn du es vor dem Einfügen brauchst würde ichs vllt so machen:
transaktion starten
insert absetzen
letzten Eintrag zurückgeben und prüfen
bei ungültigem wert einen Rollback machen


#5

Das Problem ist, ich bekomme den Statement praktisch als String. Ich hab nur diesen String und den muss ich richtig unterteilen, das Schwierige daran ist einfach das wenn ein String ausgewählt wird jedes sonderzeichen drin vorkommen kann.
Ja np ich bin vor der mittagspause auch noch zu kaum was zu gebrauchen :smiley:


#6

Was willst du überhaupt mit der Unterteilung erreichen? Vorabprüfung, Werte übernehmen für weiter Aktionen? In meinem letzten Post steht ja der Vorschlag, dass du das ding (transaktionsgesichert) wegschreibst und dir einfach die Werte von der DB geben lässt. Wäre das eine Möglichkeit?


#7

um es dir einfach vorzustellen: es gibt keine db. Ich habe einen String, der einem Query entspricht. Der könnte wie oben schon zu sehen folgenden dingen enstprechen. Ich möchte das auseinander genommene dann in eine db reinschreiben

mit

stm.setString(1,"da kommt dann zumbeispiel soein string text rein");
stm.setInteger(2,234);

deswegen brauche ich das in teile