It should save some time. How much is questionable.
Why would sqlite have to bind the Pointer bound variables? Isn't the strategy
of binding to associate a variable with a statment? Why should I have to
continually re-associate the bindings with a statement thats allready been
prepared and bound, just to execute it again after a reset ?
I guess I'm a bit confused, I'll look at the bind code in sqlite some more.
Scott Hess <[EMAIL PROTECTED]> wrote: I don't see how your modified version is
any better than just putting
the sqlite3_bind_int() inside the loop. You've superficially lifted
some code out of the loop, but sqlite3_step() is going to have to go
through and bind all of the "pointer bound" variables in your
suggested API, so it won't save you anything in the end.
-scott
On 3/19/07, ken-33 wrote:
>
> Anyone thoughts?
>
>
> ken-33 wrote:
> >
> > Question for the list,
> >
> > I'd like to optimize my code, using the following pseudo code as an
> > example.
> >
> > ===================================
> > int i = 0 ;
> > char str[20];
> >
> > sqlite3_prepare_v2( "insert into t1 values (?,?)" )
> > sqlite3_bind_int ( i )
> > sqlite3_bind_text(str)
> >
> > BEGIN TRANSACTION
> > For (i = 0; i < 10; i++) {
> > sqlite3_step ( );
> > sqlite3_reset( )
> > }
> > COMMIT TRANSACTION
> > ======================================
> >
> > However, the above code will fail to insert the values for i in the loop.
> > It will only insert the value 0, since that was the binding value...
> >
> > An enhancement request would be to allow the user to bind the address to
> > the statement objects. This would be a huge benefit from the standpoint
> > of fewer function calls to sqlite3_bind in the inside loop.
> >
> > So maybe the following API:
> >
> > sqlite3_pbind_int(sqlite3_stmt *, int, int * );
> > sqlite3_pbind_int64(sqlite3_stmt *, int, long long int * );
> > sqlite3_pbind_double(sqlite3_stmt *, int, dobule *);
> > sqlite3_pbind_text(sqlite3_stmt, int, const char *, int *,
> > void(*)(void*));
> > notice the text takes a pointer to the length...
> > sqlite3_pbind_blob(sqlite3_stmt*, int, const char *, int *,
> > void(*)(void*));
> >
> > Concept of SQLITE_STATIC vs SQLITE_TRANSIENT is implied that all data is
> > SQLITE_STATIC.
> >
> > Regards,
> > Ken
> >
> >
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/API-enhancement-tf3405347.html#a9562311
> Sent from the SQLite mailing list archive at Nabble.com.
>
>
> -----------------------------------------------------------------------------
> To unsubscribe, send email to [EMAIL PROTECTED]
> -----------------------------------------------------------------------------
>
>
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------