como enviar nombre de tabla como parametro ?
hola foro tengo el siguente codigo en donde quiero enviar como parametros 2 valores 1. el nombre de la tabla , 2. el valor de un campo, este es mi codigo:
al ejecutar me marca error alguien me puede ayudar a como pasar esos 2 parametros ? saludos. |
Hola
No lo se, pero me parece que sobran comillas: Saludos |
Cita:
|
seria de Muuuuuucha ayuda saber cual es el error no?
|
También depende la BD que estés usando, algunas no lo permiten.
|
datos extras
estoy utilizando el DBE con tablas paradox.
este es el error que me marca en tiempo de ejecucion Código:
project cllmex raised exception class EDBEngineerror with message " invalid use of keyword. saludos !!!! |
asi se llama tu base de datos? @viajes.DB?
|
hola oscarac y demas amigos
la base de datos se llama cllmex y es un alias en DBE que esta direccionado
a c:\cllmex\datos la tabla se llama @viajes.db por eso al campo qtabla le asigno la cadena qtabla:=dbserver+'\@viajes.db' pues la variable dbserver trae arrastrando el valor 'C:\cllmex\datos' entonces qtabla := 'c:\cllmex\datos' + '\@viajes.db'; resultado qtabla := 'c:\cllmex\datos\@viajes.db'; |
Hola sabueso1010.
No podés pasar el nombre de la tabla a una consulta así en forma directa, vas a tener que crearte un procedimiento para la tarea. ¿ Es necesario que lo hagas de forma dinámica ? No me parece buena idea por que además de ser ineficiente, deja tu código expuesto a los ataques de inyección de sql. De todas maneras no conozco Paradox para saber si lo soportaría y de ser así como hacerlo. Un saludo. |
Hola. Prueba a construir la sentencia SQL de esta forma.
Nota: No la he probado, a lo mejor debes usar la función QuotedStr. SQL.ADD('select * from '+QuotedStr(qtabla)+' where referencia = :xreferencia '); |
Hola sabueso1010.
Una aclaración, cuando dije: Cita:
Del modo que te sugiere defcon1_es si se puede, pero deja el código expuesto a la Inyección SQL. Saludos. |
Hola, mira este código y espero te ayude.
solo que al formar tu consulta por código no le veo sentido pero esto funciona, correctamente. ojo. qtabla tiene que ser un variable tipo string |
Cita:
¿modificando en memoria el contenido de la variable qTabla? Voy a buscar más referencias sobre inyecciones de código SQL y sobre todo herramientas para el análisis de este tipo de vulnerabilidad. |
solucionado
solucionado con el codigo de defcon1_es que es
y muy importante tanto como el codigo el consejo de ECFISA, hay que tomar en cuenta mucho que asi el codigo queda expuesto a inyeccion, muy cierto. por el momento sali del problema con el codigo pero si hay que considerar lo que nos dice ECFISA. gracias a todos los que coolaboraron con este hilo y espero le sirva en el futuro a alguien mas. saludos. |
Cita:
Si el valor es asignado por código yo tampoco veo la posibilidad de hacerlo. Mi comentario fué por que no ví de que manera sabueso1010 asignaba el valor a la variable, por lo que el código SQL bién podría haber quedado expuesto. Ahora revisando con más detenimiento véo que no reparé bién en el mensaje #8 donde sabueso1010 dice: Cita:
Al igual que comentás en tu último mensaje, yo también tendría que profundizar más sobre si aún así existe la posibilidad, ya que es una vulnerabilidad potencial muy peligrosa. Lo que es claro que con el uso de parámetros no es viable la inyección. Un saludo. |
Y tanto que es peligrosa:
"existen alrededor de 115 millones de vulnerabilidades de inyección SQL en circulación, basándose en los datos conseguidos mediante la monitorización de un conjunto de 30 aplicaciones web durante los pasados nueve meses." Noticia: http://www.csospain.es/Los-ataques-d...noticia-113621 |
La franja horaria es GMT +2. Ahora son las 09:23:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi