On Fri, 2007-08-10 at 11:28 +0200, Jef Driesen wrote:
> When using sqlite3_bind_text() (or a similar function) with 
> SQLITE_STATIC, how long does the pointer have to remain valid? As long 
> as the sqlite3_stmt is not finalized?

Pretty much. It has to be valid during all subsequent calls to 
sqlite3_step() on the statement handle. Or until you bind a
different value to the same parameter.

So the technique below is fine.

Dan.

> 
> It is clear to me the following will cause no problem:
> 
> sqlite3_bind_text (stmt, column, "some text", -1, SQLITE_STATIC);
> 
> But what about this:
> 
> void some_func (const char* text)
> {
>     sqlite3_stmt *stmt = 0;
>     sqlite3_prepare_v2 (db, sql, -1, &stmt, NULL);
>     sqlite3_bind_text (stmt, column, text, -1, SQLITE_STATIC);
>     sqlite3_step (stmt);
>     ...
>     sqlite3_finalize (stmt);
> }
> 
> In this case the pointer remains unchanged as long as the statement is 
> valid, but it can change afterwards. Is that a problem and should I use 
> SQLITE_TRANSIENT here?
> 
> 
> 
> -----------------------------------------------------------------------------
> To unsubscribe, send email to [EMAIL PROTECTED]
> -----------------------------------------------------------------------------
> 


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to