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.. :-)
Hvorfor bruger du ikke parameters og lader driveren/provideren bekymre sig om dette problem ??
et dårlig usikker hack vil være:
sql = "insert into mintabel (navn, alder) values('" & replace(navn,"'","''") & "', " & alder & ")"
http://www.eksperten.dk/ (...) forklarer parameters i ADO sammenhæng
(jeg har også diverse andre eksempler på lager)
regex kan jeg ikke se megen pointe i at bruge
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?
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.
arne_v: Smid venligst et svar, så du kan få points :-)
Tak for hjælpen og god aften :-)
- points givet