Mientras reviso algunos libros SQL encontré que los ejemplos tienden a usar signos de interrogación (?
) en sus consultas. ¿Que representa?¿Qué representa un signo de interrogación en las consultas SQL?
Respuesta
El ?
es un parámetro sin nombre que puede ser completado por un programa que ejecuta la consulta para evitar SQL injection.
¿Puedes dar un ejemplo de esto? – Brad
Normalmente representa un parámetro que debe suministrar el cliente.
Es un parámetro. Puede especificarlo al ejecutar la consulta.
No creo que tenga ningún significado en SQL. Es posible que esté buscando Declaraciones preparadas en JDBC o algo así. En ese caso, los signos de interrogación son marcadores de posición para los parámetros de la declaración.
El ?
es para permitir Parameterized Query. Esta consulta parametrizada permite el valor específico del tipo cuando se reemplaza el ?
con su valor respectivo.
Eso es todo.
Aquí hay un reason de por qué es mejor utilizar la consulta parametrizada. Básicamente, es más fácil de leer y depurar.
Lo que está viendo es una consulta parametrizada . Se usan con frecuencia al ejecutar SQL dinámico desde un programa.
Por ejemplo, en lugar de escribir esto (nota: pseudocódigo):
ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = 7")
result = cmd.Execute()
escribirte esta:
ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?")
cmd.Parameters.Add(7)
result = cmd.Execute()
Esto tiene muchas ventajas, como es obvio, probablemente. Una de las más importantes: las funciones de la biblioteca que analizan sus parámetros son inteligentes y garantizan que las cadenas se escapen correctamente. Por ejemplo, si escribe esto:
string s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE (name = '" + s + "')"
cmd.Execute()
¿Qué sucede cuando el usuario ingresa esto?
Robert'); DROP TABLE students; --
(respuesta es here)
escribir este lugar:
s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE name = ?"
cmd.Parameters.Add(s)
cmd.Execute()
A continuación, la biblioteca se desinfectar la entrada, produciendo esto:
"SELECT * FROM students where name = 'Robert''); DROP TABLE students; --'"
No todos los DBMS use ?
. MS SQL utiliza el nombre parámetros, que considero una mejora enorme :
cmd.Text = "SELECT thingA FROM tableA WHERE thingB = @varname"
cmd.Parameters.AddWithValue("@varname", 7)
result = cmd.Execute()
- 1. signo de interrogación en JavaScript
- 2. ¿Qué hace un doble signo de interrogación en C#?
- 3. ¿qué significa un doble signo de interrogación en C#
- 4. ¿Qué significa un "?" significa símbolo (signo de interrogación) en Scala?
- 5. Reemplazar un signo de interrogación (?) Con (\\?)
- 6. ¿Qué representa un servidor doble en sql?
- 7. WebView muestra un signo de interrogación en un cuadro azul
- 8. ¿Qué significa el signo de interrogación en GSP/Grails?
- 9. ¿Qué significa el signo de interrogación en esta función?
- 10. ¿Qué significa el operador del signo de interrogación en Ruby?
- 11. ConsoleKeyInfo, el signo de interrogación y Portabilidad
- 12. escapando signo de interrogación en regex javascript
- 13. Declaración de variables signo de interrogación
- 14. Erlang: ¿Qué significa la sintaxis del signo de interrogación?
- 15. attr_reader con signo de interrogación en un nombre
- 16. Segmento de ruta MVC con un signo de interrogación?
- 17. Una curiosa sintaxis de C# con un signo de interrogación
- 18. Genéricos y el signo de interrogación
- 19. Acerca del signo de interrogación en la expresión regular
- 20. SQL anexar las consultas
- 21. ¿Cómo coloco un signo de interrogación sobre \ leq?
- 22. Problema Unicode con un título HTML, ¿signo de interrogación? 65533;
- 23. ¿Qué significa un signo de interrogación después de una declaración de variable?
- 24. del signo de interrogación es igual, no funciona en php
- 25. Signo de interrogación (?) En atributos XML para Android
- 26. ¿Qué significa el signo de interrogación al final de un css incluyendo url do?
- 27. js-hotkeys - cómo enlazar a? signo de interrogación
- 28. Pathprefix filtro de intención con el signo de interrogación
- 29. ¿Qué es un signo de interrogación "?" y Colon ":" ¿Se usó el operador?
- 30. Signo de interrogación, más, menos los nombres de las variables de Prolog anteriores
Podría dar el código para la consulta? – Gage
Supongo que son variables en las declaraciones preparadas, pero debe publicar esa consulta en particular para estar seguro. – kennytm
@Mitch Wheat, simplemente significa que puede obtener ayuda de los genios aquí con bastante satisfacción (si necesita respuestas de expertos). –