C S <[EMAIL PROTECTED]> wrote:
>  thanks for all your help too man. here is what is in
> the table images so far when i do a select. its 3
> blobs:
>
> sqlite> select imageID, hex(imageData) from Images;
> 1|00 0003 0006 0009 000C 000F 0012 0015 0018 001B 00
> 2|00 0001 0002 0003 0004 0005 0006 0007 0008 0009 00
> 3|00 0001 0002 0003 0004 0005 0006 0007 0008 0009 00
> *****************************************************

I bet you are running on a little-endian machine. On such a machine, the 
low-order byte comes first. So the correct breakdown is

1|0000 0300 0600 0900 0C00 0F00 1200 1500 1800 1B00

For example, two bytes 0300 represent a two-byte integer 3 in 
little-endian (least-significant byte first, most-significant last).

> while ((status = sqlite3_step(statement)) ==
> SQLITE_ROW)
>   {
>    i++
>
>    num_bytes = sqlite3_column_bytes(statement, i);

'i' refers to the row index, and is incremented with each step. The last 
parameter to sqlite3_column_bytes is a _column_ index: it doesn't change 
as you scan through rows. You always pass 0 to retrieve the first column 
(from the current row, whatever it happens to be), 1 to retrieve the 
second column and so on.

Your code just accidentally happens to pass a correct column index for 
the first row, but wrong index for all subsequent rows.

Igor Tandetnik 



_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to