2010-09-29 10 views
6

Qualcuno può mettere più luce sulle funzioni:sqlite3 preparazione, rilegatura e reseting statments

sqlite3_reset(); 
sqlite3_clear_bindings() 

ho capito che posso usare sqlite3_prepare() da tradurre stringa SQL in codice byte nativo quale motore capisce. Pertanto, il motore non deve tradurlo ogni volta che viene utilizzato. Posso anche parametrizzare tale istruzione preparata e successivamente associarvi i valori con le funzioni sqlite3_bind *().

Posso assegnare il valore NULL a questi parametri associati con sqlite3_clear_bindings(). Da documentation si può leggere che sqlite3_reset(), non distrugge i collegamenti, i valori vengono preservati e l'oggetto viene messo nello stato iniziale. Cosa significa attualmente? Soprattutto la parte sul non distruggere le associazioni.

Grazie.

+0

È corretto che quando si esegue il binding, i valori vengono copiati su stmt? (oltre alle funzioni sqlite3_bind_text *() dove devi specificare il quinto param). – name

risposta

3

sqlite3_reset cancella lo stato che l'istruzione preparata ha mantenuto durante l'esecuzione. Questo lo riporta allo stato iniziale, quindi "resettandolo". I binding rimangono intatti. La dichiarazione può essere rieseguita. Senza resettarlo, riceverai un errore quando proverai ad eseguirlo.

sqlite3_clear_bindings cancellerà semplicemente i collegamenti, ma non modificherà lo stato sull'istruzione preparata. Non è possibile rieseguire una dichiarazione preparata se si sono cancellati i binding.

Problemi correlati