pourquoi tu prépares la requête à chaque itération? je ferais plutot:
sqlite3_prepare(db,"INSERT INTO tbl (champ1,champ2) VALUES ( ?001, 5 )",1000,&statement,&zTail);
for (int i =0;i<100;i++){
sqlite3_bind_int(statement, 1, i);
...
non?

edit: ah, ok , en fait une transaction, c'est pas con, vu que sinon sqlite écrit le disque a chaque insert.