Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





problemas para cargar con SQL

Iniciado por sebastianarroyo, 23 de Noviembre de 2007, 12:32:35 AM

« anterior - próximo »

sebastianarroyo

hola, tengo un error insolito (al menos para mi). estoy utilizando el siguiente codigo para poder guardar en una base de acces unos datos.

Sql = "Update tabla_base Set "
Sql = Sql & "nombre = '" & nombre & "'"
Sql = Sql & ",interprete = '" & interprete & "'"
Sql = Sql & ",Duracion = '" & Duracion & "'"
Sql = Sql & ",intro = '" & intro & "'"
Sql = Sql & ",categoria = '" & Categoria & "'"
Sql = Sql & ",tiemposali = '" & tiemposali & "'"
Sql = Sql & ",ubicacion = '" & ubicacion & "'"
Sql = Sql & ",fechagraba = '" & fechagraba & "'"
Sql = Sql & ",fechavence = '" & fechavence & "'"
Sql = Sql & ",outro = '" & outro & "'"
Sql = Sql & " Where codigo = '" & codigo & "'"

mibase3.Execute Sql, dbFailOnError

El problema es que si en cualqiera de los campos a grabar el dato tiene un " ' " (apostofe) me tira un error de sentencia.
es decir me toma el (apostrofe) que esta en la cadena a guardar como si fuera algo de la sintaxis.-

mas resumido:
si grabo esto: hola mi nombre es sebastian
(no mapa nada)
pero si intento de esta manera: hola mi nombre es sebastia'n
(tengo error)


desde ya muchas gracias


[/code]

Tei

leete algo como inyeccion de sql.

se trata de tratar los datos como "datos" aisladamente del codigo, de modo que cuando se construya la sentencia lo hagas tu o se haga automaticamente, se escapen los datos y no exista la posibilidad intencionada, malintencionada, o desintencionada de una inyeccion de sql.

aparte, modernamente, a la gente le mola hacer procedures, esto son sentencias ya preparadas, que aceptan unos parametros. Son interesantes desde un punto de vista de optimizacion, segurad y de tener las cosas ordenadicas.

Si vuelves a mostrar otro SQL construido por simple concatenacion de cadenas, es posible que alguien le de un infarto :DD

jazcks

has probado a guardar la cadena con: hola mi nombre es sebastia\'n






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.