proteccion de apostrofes

02/02/2006 - 16:25 por Walter Arce | Informe spam
hola como protejo una consulta sql de los apostrofes que pueda tener un
campo de texto

Saludos,

Walter

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
02/02/2006 - 18:59 | Informe spam
La mejor forma es usar parametros pero tambien puedes duplicar los
apostrofes.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 LeMaNú
03/02/2006 - 12:40 | Informe spam
Hola! Tienes dos opciones para "acomodar" el valor del parámetro que tiene
apóstrofes:
1. Crea una función que reciba una cadena y te devuelva la misma cadena pero
sin apóstrofes. Si usa Visual Basic .NET podría ser:

Public Function noComilla(ByVal strCuenta As String)
Dim str As String, strC As String, i As Integer, n As Integer, j As
String
If Len(Trim(strCuenta)) = 0 Then noComilla = ""
str = ""
i = 0
n = Strings.Len(strCuenta)
strC = strCuenta & "'"
While Strings.InStr(strC, "'") <> 0
j = Strings.InStr(strC, "'")
str = str & Strings.Left(strC, j - 1)
i = i + j
strC = Strings.Right(strCuenta & "'", n - j + 1)
n = n - j
End While
noComilla = str
End Function


Modo de Empleo:
Dim strSQL as string, strApellidos as string
strApellidos = "Leonardo D'Leon"
strSQL = "SELECT * FROM CLIENTES WHERE APELLIDOS LIKE '%" &
NOCOMILLA(strApellidos) & "%'"

2. Crea una función que sustituya un apóstrofe por dos apóstrofes:
Public Function strfill(ByVal str1 As String, ByVal str2 As String, ByVal
str As String) As String
Dim str3 As String
Dim i As Integer, n As Integer
If Len(str1 & "") = 0 Then Exit Function
For i = 1 To Len(str1) Step Len(str2)
If Right(Left(str1, i), Len(str2)) = str2 Then
str3 = str3 & str
Else
str3 = str3 & Right(Left(str1, i), Len(str2))
End If
Next i
strfill = str3
End Function

Modo de Empleo

strSQL = strFill("Leonardo D'Leo","'","''")

Al ejecutar la instrucción notarás que strSQL = "Leonardo D''Leo"
Respuesta Responder a este mensaje
#3 Marcel
03/02/2006 - 18:03 | Informe spam
En respuesta a tu opción 1. será más sencillo usar replace de String
Public Function noComilla(ByVal strCuenta As String)
noComilla = strCuenta.Replace("'","")
End Function

y la segunda sería

Public Function strfill(ByVal str1 As String, ByVal str2 As String, ByVal
str As String) As String
strfill = str1.Replace(str2 ,str)

End Function

O lo mismo
strSQL = "Leonardo D'Leo".Repalce("'","''")




"LeMaNú" escribió:

Hola! Tienes dos opciones para "acomodar" el valor del parámetro que tiene
apóstrofes:
1. Crea una función que reciba una cadena y te devuelva la misma cadena pero
sin apóstrofes. Si usa Visual Basic .NET podría ser:

Public Function noComilla(ByVal strCuenta As String)
Dim str As String, strC As String, i As Integer, n As Integer, j As
String
If Len(Trim(strCuenta)) = 0 Then noComilla = ""
str = ""
i = 0
n = Strings.Len(strCuenta)
strC = strCuenta & "'"
While Strings.InStr(strC, "'") <> 0
j = Strings.InStr(strC, "'")
str = str & Strings.Left(strC, j - 1)
i = i + j
strC = Strings.Right(strCuenta & "'", n - j + 1)
n = n - j
End While
noComilla = str
End Function


Modo de Empleo:
Dim strSQL as string, strApellidos as string
strApellidos = "Leonardo D'Leon"
strSQL = "SELECT * FROM CLIENTES WHERE APELLIDOS LIKE '%" &
NOCOMILLA(strApellidos) & "%'"

2. Crea una función que sustituya un apóstrofe por dos apóstrofes:
Public Function strfill(ByVal str1 As String, ByVal str2 As String, ByVal
str As String) As String
Dim str3 As String
Dim i As Integer, n As Integer
If Len(str1 & "") = 0 Then Exit Function
For i = 1 To Len(str1) Step Len(str2)
If Right(Left(str1, i), Len(str2)) = str2 Then
str3 = str3 & str
Else
str3 = str3 & Right(Left(str1, i), Len(str2))
End If
Next i
strfill = str3
End Function

Modo de Empleo

strSQL = strFill("Leonardo D'Leo","'","''")

Al ejecutar la instrucción notarás que strSQL = "Leonardo D''Leo"
Respuesta Responder a este mensaje
#4 Jesús López
03/02/2006 - 18:35 | Informe spam
Yo estoy con Eduardo: usa consultas parametrizadas y deja que sea el
proveedor de datos quien se las arregle

Saludos:

Jesús López
MVP

"Walter Arce" escribió en el mensaje
news:
hola como protejo una consulta sql de los apostrofes que pueda tener un
campo de texto

Saludos,

Walter

Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
03/02/2006 - 19:47 | Informe spam
Yo estoy con Eduardo: usa consultas parametrizadas y deja que sea el
proveedor de datos quien se las arregle



Que bueno que alguien este conmigo en esto de los parametros.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida