utilizar tiempo reducir rapidas optimizar optimas mas grandes ejemplos consultas consulta sql prepared-statement

rapidas - reducir tiempo de consulta sql



¿Qué representa un signo de interrogación en las consultas SQL? (6)

Esta pregunta ya tiene una respuesta aquí:

Mientras revisaba algunos libros SQL, encontré que los ejemplos tienden a utilizar signos de interrogación ( ? ) En sus consultas. ¿Que representa?


El ? es permitir Quemeterized Query . ¿Esta consulta parametrizada permite el valor específico del tipo al reemplazar el ? con su valor respectivo

Eso es todo.

Aquí hay una reason por la cual es mejor usar Quemeter Parameterized. Básicamente, es más fácil de leer y depurar.


El ? es un parámetro sin nombre que puede ser completado por un programa que ejecuta la consulta para evitar la here .


Es un parámetro Puede especificarlo al ejecutar la consulta.


Lo que estás 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()

Usted escribe esto:

ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?") cmd.Parameters.Add(7) result = cmd.Execute()

Esto tiene muchas ventajas, como probablemente sea obvio. 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; --

(La respuesta está here )

Escribe esto en su lugar:

s = getStudentName() cmd.CommandText = "SELECT * FROM students WHERE name = ?" cmd.Parameters.Add(s) cmd.Execute()

Entonces la biblioteca desinfectará la entrada, produciendo esto:

"SELECT * FROM students where name = ''Robert''''); DROP TABLE students; --''"

¿No es todo el uso de DBMS ? . MS SQL utiliza parámetros con nombre , que considero una gran mejora:

cmd.Text = "SELECT thingA FROM tableA WHERE thingB = @varname" cmd.Parameters.AddWithValue("@varname", 7) result = cmd.Execute()


No creo que eso 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.


Normalmente representa un parámetro que debe ser suministrado por el cliente.