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