Problemas con comillas

03/02/2006 - 13:33 por RafaPiula | Informe spam
Tengo un campo texto donde el usuario puede poner cualquier expresión
del tipo 23º 45' 23" N, son longitudes y latitudes en un mapa.
El problema surge cuando quiero actualizar el dato en la tabla SQL. No
sé cómo modificar la cadena para que sean caracteres válidos para
SQL.
La cadena no tiene siempre la misma estructura, de manera que no puedo
separar los distintos grupo de la cadena.
Si utilizo Replace, funciona bien con las comillas simples o º, pero
al intentar cambiar las dobles comillas, no sé cómo ponerlo.

Gracias
Rafa

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
03/02/2006 - 15:11 | Informe spam
Usa parametros. Por ejemplo:

Dim cmd As New SqlCommand

cmd.Connection = conexion
cmd.CommandText = "INSERT INTO TABLA (Campo1, Campo2) VALUES(@CAMPO1,
@CAMPO2)"

cmd.Parameters.Add("@CAMPO1", txtCampo1.Text)
cmd.Parameters.Add("@CAMPO2", txtCampo2.Text)

Try
conexion.Open()
cmd.ExecuteNonQuery()
Finally
conexion.Close()
End Try

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Edie
03/02/2006 - 15:34 | Informe spam
ok creo que te puedo ayudar pero tienes que ser mas específico, la expresion
que tomas del text box la quieres introducir en la base de datos como la
misma expresion en si o la quires separar en grupos distintos y luego poner
cada uno en un campo?

bueno espero que esto te sirva para que sea una cadena valida para sql solo
en donde va la comilla simple tienes que agregar otra comilla simple y tu
cadena será valida para SQL:

en vez de:
update tabla1 set coordenada = '23º 45' 23" N' --CADENA NO VALIDA
update tabla1 set coordenada = '23º 45'' 23" N' --CADENA VALIDA
DESPUES DEL 45 SON DOS(2) COMILLAS SIMPLES SEGUIDAS LOGRARAS ESTO EN ESTA
FORMA DESDE VISUAL BASIC

strSQL = "update tabla1 set coordenada = '" & textBox1.Replace("'", "''") &
"'"
'reemplazas la comilla simple por dos comillas simples
''espero te sirva
'''asme saberlo si es así y si no tambien

"RafaPiula" escribió:

Tengo un campo texto donde el usuario puede poner cualquier expresión
del tipo 23º 45' 23" N, son longitudes y latitudes en un mapa.
El problema surge cuando quiero actualizar el dato en la tabla SQL. No
sé cómo modificar la cadena para que sean caracteres válidos para
SQL.
La cadena no tiene siempre la misma estructura, de manera que no puedo
separar los distintos grupo de la cadena.
Si utilizo Replace, funciona bien con las comillas simples o º, pero
al intentar cambiar las dobles comillas, no sé cómo ponerlo.

Gracias
Rafa


Respuesta Responder a este mensaje
#3 Edie
03/02/2006 - 15:47 | Informe spam
esta solucion es buena si tu aplicacion no es de tipo distribuida de lo
contrario es ina mala opción.

por ejemple si en algun momento deses cambiar el provider de base de datos
tu aplicacion implicaria demaciados cambios...

pero es una buena opcion ya que estas clases se encargan de hacer lo
anterior, validar tu SQLQuery pero solo para el provider en que han sido
creadas...

"Eduardo A. Morcillo [MS MVP VB]" escribió:

Usa parametros. Por ejemplo:

Dim cmd As New SqlCommand

cmd.Connection = conexion
cmd.CommandText = "INSERT INTO TABLA (Campo1, Campo2) VALUES(@CAMPO1,
@CAMPO2)"

cmd.Parameters.Add("@CAMPO1", txtCampo1.Text)
cmd.Parameters.Add("@CAMPO2", txtCampo2.Text)

Try
conexion.Open()
cmd.ExecuteNonQuery()
Finally
conexion.Close()
End Try

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C



Respuesta Responder a este mensaje
#4 Anonimo
03/02/2006 - 19:12 | Informe spam
donde el ha puesto los textbox.text, tu pon tu cadena, tal cual, con los
símbolos ' y todo, tendría que funcionar


"Edie" ha escrit en el missatge dels grups de
discussió:
ok creo que te puedo ayudar pero tienes que ser mas específico, la
expresion
que tomas del text box la quieres introducir en la base de datos como la
misma expresion en si o la quires separar en grupos distintos y luego
poner
cada uno en un campo?

bueno espero que esto te sirva para que sea una cadena valida para sql
solo
en donde va la comilla simple tienes que agregar otra comilla simple y tu
cadena será valida para SQL:

en vez de:
update tabla1 set coordenada = '23º 45' 23" N' --CADENA NO VALIDA
update tabla1 set coordenada = '23º 45'' 23" N' --CADENA VALIDA
DESPUES DEL 45 SON DOS(2) COMILLAS SIMPLES SEGUIDAS LOGRARAS ESTO EN ESTA
FORMA DESDE VISUAL BASIC

strSQL = "update tabla1 set coordenada = '" & textBox1.Replace("'", "''")
&
"'"
'reemplazas la comilla simple por dos comillas simples
''espero te sirva
'''asme saberlo si es así y si no tambien

"RafaPiula" escribió:

Tengo un campo texto donde el usuario puede poner cualquier expresión
del tipo 23º 45' 23" N, son longitudes y latitudes en un mapa.
El problema surge cuando quiero actualizar el dato en la tabla SQL. No
sé cómo modificar la cadena para que sean caracteres válidos para
SQL.
La cadena no tiene siempre la misma estructura, de manera que no puedo
separar los distintos grupo de la cadena.
Si utilizo Replace, funciona bien con las comillas simples o º, pero
al intentar cambiar las dobles comillas, no sé cómo ponerlo.

Gracias
Rafa


Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
03/02/2006 - 19:39 | Informe spam
esta solucion es buena si tu aplicacion no es de tipo distribuida de
lo contrario es ina mala opción.



Usar parametros es una buena opcion siempre, lo que no es tan bueno es usar
acceder directamente desde la aplicacion a la BD. Si creas clases de acceso
a datos que devuelvan los datos a la aplicacion el cambio de proveedor no es
gran cosa porque solo tendras que actualizar esas clases y no hara falta
tocar la aplicacion.

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