sql >> Base de Datos >  >> RDS >> Mysql

¿Qué función de ejecución debo usar en el conector MySQL/c++?

Cada una de las tres funciones tiene un uso específico, que se puede adivinar a partir de su tipo de retorno.

ejecutar

Esta función es la más genérica. Devuelve un valor booleano, cuyo valor es verdadero si la consulta devuelve varios resultados, o falso si la consulta no devuelve nada o un recuento de actualizaciones.

Esta es la función que querrá usar si solo quiere usar una para que sea lo más genérico posible.

Si devuelve verdadero, querrá usar ResultSet * getResultSet() para obtener los resultados.
Si devuelve falso, querrá usar uint64_t getUpdateCount() para obtener el número de filas actualizadas.

ejecutar consulta

Esta función devuelve directamente un ResultSet que es útil para SELECT declaraciones, y asume que de hecho hay un conjunto de resultados para ser devuelto.

Es equivalente a llamar a execute() seguido de getResultSet() .

Querrá usar esta función cuando sepa que está usando código SQL que devuelve resultados como filas.

ejecutar Actualización

Esta función devuelve un valor entero que es útil para UPDATE declaraciones y asume que hay un conteo de actualizaciones para ser devuelto.

Es equivalente a llamar a execute() seguido de getUpdateCount() , aunque, por algún motivo, los tipos de devolución son diferentes (int frente a uint64_t).

Esta es la función a utilizar cuando se ejecutan sentencias SQL que modifican datos y necesita saber si se modificaron algunos datos.

Entonces,

el unificado es de hecho execute , que se puede usar para ejecutar SQL arbitrario y manejar el resultado de manera adecuada, mientras que los otros dos son contenedores convenientes cuando sabe qué tipo de consulta ejecuta.

En su caso, dado que está escribiendo un contenedor en torno al lenguaje SQL, cada una de sus funciones sabe qué tipo de declaración ejecutará, por lo que el uso de las funciones de conveniencia le permitirá escribir un código más corto.

Por ejemplo:

insert(), update(), delete() ---> executeUpdate()
select()                     ---> executeQuery()