sqlite3_exec is a crutch that uses the SQLite3 prepare/bind/step APIs to provide a simplistic interface for use when it is adequate for the purpose. It sounds like it is not adequate for your purpose. Therefore, you should use the prepare/bind/step APIs directly. And no, the callback function is used to handle the text results of executing the statement.