2010-09-29 9 views
6

Puede alguien poner más luz sobre las funciones:sqlite3 preparación, vinculante y reseteo statments

sqlite3_reset(); 
sqlite3_clear_bindings() 

entiendo que puedo usar sqlite3_prepare() para traducir cadena SQL de código de bytes nativo, que comprende el motor. Por lo tanto, el motor no tiene que traducirlo cada vez que se utiliza. También puedo parametrizar dicha instrucción preparada y luego vincular valores con las funciones sqlite3_bind *().

Puedo asignar valor NULO a estos parámetros enlazados con sqlite3_clear_bindings(). De documentation se puede leer que sqlite3_reset(), no destruye enlaces, los valores se conservan y el objeto se pone en estado inicial. ¿Qué significa en realidad? Especialmente la parte sobre no destruir enlaces.

Gracias.

+0

¿Es correcto que cuando se une, los valores se copian en stmt? (además de las funciones sqlite3_bind_text *() donde debe especificar 5th param). – name

Respuesta

3

sqlite3_reset borra el estado que la declaración preparada mantuvo durante la ejecución. Esto lo restablece al estado inicial, por lo tanto, "restablecerlo". Los enlaces permanecen intactos. La declaración se puede volver a ejecutar. Sin restablecerlo, recibirá un error cuando intente ejecutarlo.

sqlite3_clear_bindings simplemente borrará los enlaces, pero no cambiará el estado en la instrucción preparada. No puede volver a ejecutar una declaración preparada si acaba de borrar los enlaces.