Oprettet tor. d. 29. oktober 2009 kl. 16:49:29

thesurfer
thesurfer (107.890 point. Point ude: 0)

RegEx, ret plinger i SQL sætninger, Regular Expression

Jeg har brug for noget RegEx til at fixe plinger (') i SQL sætninger.

Eksempel:

navn = "Ole's automobil"
alder = 30


sql = "insert into mintabel (navn, alder) values('" & navn & "', " & alder & ")"

Bliver jo til følgende som fejler:

"insert into mintabel (navn, alder) values('Ole's automobil', 30)"

Det skal igennem RegEx og blive til:

"insert into mintabel (navn, alder) values('Ole''s automobil', 30)"


Da jeg er elendig til RegEx, spørger jeg her.. :-)

Skrevet tor. d. 29. oktober 2009 kl. 16:54:33| #1

thesurfer
thesurfer (107.890 point)
Læg mærke til, at der kan være strenge og tal, som også fremgår at mit eksempel..

Hmm.. hva' nu hvis man selv har skrevet 2x ' tegn.. ?

Me dont know hvordan det normalt virker.. :-)

Skrevet lør. d. 31. oktober 2009 kl. 04:13:20| #2

arne_v
arne_v (1.016.169 point)
Hvorfor bruger du ikke parameters og lader driveren/provideren bekymre sig om dette problem ??

Skrevet lør. d. 31. oktober 2009 kl. 04:14:23| #3

arne_v
arne_v (1.016.169 point)
et dårlig usikker hack vil være:

sql = "insert into mintabel (navn, alder) values('" & replace(navn,"'","''") & "', " & alder & ")"

Skrevet lør. d. 31. oktober 2009 kl. 04:15:45| #4

arne_v
arne_v (1.016.169 point)
http://www.eksperten.dk/ (...) forklarer parameters i ADO sammenhæng

(jeg har også diverse andre eksempler på lager)

Skrevet lør. d. 31. oktober 2009 kl. 04:16:11| #5

arne_v
arne_v (1.016.169 point)
regex kan jeg ikke se megen pointe i at bruge

Skrevet lør. d. 31. oktober 2009 kl. 07:17:45| #6

thesurfer
thesurfer (107.890 point)
Situationen er følgende:

En SQL-sætning sammensættes og plinger erstattes. Problemet er, at det er op til programmøren at huske at erstatte plinger. Hvis han har glemt det et sted, er der en sikkerhedsbrist.

Denne SQL-sætningen sendes som parameter til en funktion, der afvikler SQL-sætningen, opretter et Recordset, lukker forbindelsen og returnerer Recordset'et.

Denne funktion bruges en milliard forskellige steder, på et stort site. Overgangen fra SQL-sætning til parameters vil tage lang tid (mange steder der skal erstattes).

Hvis man kunne lave noget RegEx, skal man kun erstatte koden i selve funktionen.

Vi har planer om at bruge parameters senere, men ikke lige nu.. :-)


Så.. for the time being..

Er det muligt at lave en RegEx, der kan løse problemet?

Skrevet lør. d. 31. oktober 2009 kl. 22:17:24| #7

arne_v
arne_v (1.016.169 point)
Jeg tror ikke at det er muligt.

INSERT INTO t (f1,f2) VALUES('A','B','C')

kan være

INSERT INTO t (f1,f2) VALUES( 'A','B' , 'C' )
->
INSERT INTO t (f1,f2) VALUES( 'A'',''B' , 'C' )

eller

INSERT INTO t (f1,f2) VALUES( 'A' , 'B','C' )
->
INSERT INTO t (f1,f2) VALUES( 'A' , 'B'',''C' )

så det er ikke muligt at lave en 100% korrekt algoritme.

Skrevet tor. d. 07. oktober 2010 kl. 19:32:51| #8

thesurfer
thesurfer (107.890 point)
arne_v: Smid venligst et svar, så du kan få points :-)

Skrevet tor. d. 07. oktober 2010 kl. 19:48:42| #9

arne_v
arne_v (1.016.169 point)
kommer her

Skrevet tor. d. 07. oktober 2010 kl. 21:17:32| #10

thesurfer
thesurfer (107.890 point)
Tak for hjælpen og god aften :-)
- points givet

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

ASP: formular udtræk med mulighed for at rette

Oprettet den 21. maj 2012 kl. 15.09
quarkb giver 200 point for svar | Giv et svar »

Sorter biblioteker efter dato i ASP

Oprettet den 17. maj 2012 kl. 16.52
4ks giver 60 point for svar | Giv et svar »

Simpel login-funktion (web) - behov for flere logins/brugere

Oprettet den 15. maj 2012 kl. 09.54
madx giver 75 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger