12Fermer14
onurLe 03/05/2008 à 02:59
Ok tout se rejoint, j'avais mal compris la doc:
The sqlite3_finalize() routine deallocates a prepared SQL statement. All prepared statements must be finalized before the database can be closed. The sqlite3_reset() routine resets a prepared SQL statement so that it can be executed again.


Donc, on peut faire:

	sqlite3_prepare(db,"INSERT INTO tbl (champ1,champ2) VALUES ( ?001, 5 )",-1,&statement,&zTail);	
	for (int i =0;i<10000;i++){
		sqlite3_bind_int(statement, 1, i);

		// Execute la
		rc = sqlite3_step(statement);

		// Nettoyage
		//sqlite3_finalize(statement);	// commenté == Ne libere pas le statement compilé
		sqlite3_reset(statement);
	}


et dans le cas plus haut, y a pas besoin de reset, pas de fuite de mémoire.