On 09/10/2007, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I got an error when I try to read some data outside the while{}, inside the
> while{} it's ok, an idea ?
> test.db have just one "table1" and a "field1" with values "one", "two",
> "three".
.
.
.
> const unsigned char *my_array[3];
.
> while(sqlite3_step(pStat) == SQLITE_ROW)
> {
> my_array[i] = sqlite3_column_text(pStat, 0);
> printf ("%s\n",my_array[i]); // ok
>
> i++;
> }
>
> for (i = 0; i<3; i++);{
> printf ("%s\n", my_array[i]); // error
> }
>
Hi Fred,
sqlite3_column_text is returning a pointer to a text string stored
within sqlite's private address space. If you want to access that data
after calling sqlite_step() again, then copy the data to some storage
of your own.
i.e
unsigned char* my_array[3];
while(sqlite3_step(pStat) == SQLITE_ROW)
{
my_array[i] = malloc( sqlite3_column_bytes(pStat, 0) );
memcpy( my_array[i], sqlite3_column_text(pStat, 0));
printf ("%s\n",my_array[i]);
i++;
}
for (i = 0; i<3; i++);{
printf ("%s\n", my_array[i]);
free( my_array[i] );
}
(or something like this - have not tested this code...)
Rgds,
Simon
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------