Igor,
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
*****************************************************
here is what i have now:
const unsigned short *image;
int i = 0;
myString2 = "select imageID, imageData from Images";
int status = sqlite3_prepare_v2(db, update.c_str(),
-1, &statement, NULL);
while ((status = sqlite3_step(statement)) ==
SQLITE_ROW)
{
i++
if(i == 1)
std::cout << "first row" << std::endl;
else std::cout << "another row" << std::endl;
num_bytes = sqlite3_column_bytes(statement, i);
num_bytes = num_bytes / sizeof(unsigned short);
image = new unsigned short[num_bytes];
image = (const unsigned
short*)sqlite3_column_blob(statement, i);
for(int i = 0; i < num_bytes; i++)
std::cout << "image " << i << ": " << image[i]
<< std::endl;
//delete [] image; //causes a crash so far.
}
status = sqlite3_finalize(statement);
if (status != SQLITE_OK)
std::cerr << "Error deleting prepared SQL
statement" << std::endl;
else std::cout << "finalized statement successfully"
<< std::endl;
***********************************************
Output:
first row
image 0: 0
image 1: 3
image 2: 6
image 3: 9
image 4: 12
image 5: 15
image 6: 18
image 7: 21
image 8: 24
image 9: 27
another row
another row
finalized statement successfully
--so for some reason i get the first
blob(successfully, yes!) but it never increments after
that. the statement is also finalized successfully.
any reason why the other two blobs are not printing
out?
as a side note i commented out the deleting of the
image because i got a major abort crash, no doubt
memory leaks/forbidden access issues.
thanks!!
--- Igor Tandetnik <[EMAIL PROTECTED]> wrote:
> C S <[EMAIL PROTECTED]> wrote:
> > thanks for the tip on the hex. now i can see my
> > entry of the blob. my original loop to fill the
> > dynamic array with unsigned shorts was this:
> >
> > imageArray = new unsigned short[10];
> >
> > for(int i = 0; i < 10; i++)
> > imageArray[i] = i;
> >
> > so now if i run the program then do a:
> >
> > select imageID, hex(imageData) from Images;
> >
> > i get the result:
> >
> > 1|0000010002000300040005000600070008000900
> >
> > i am not sure where the first 2 leading zeros are
> > coming from
>
> The first value (the one at index 0) in imageArray
> is zero, represented
> by two zero bytes.
>
> > now i need to be able to extract the data back out
> of
> > the blob with sqlite3_column_blob and
> > sqlite3_column_bytes so that i can repopulate an
> > unsigned short array.
> >
> > if i have multiple blobs in the table Images how
> would
> > i go about retrieving back all this information?
>
> You prepare a select statement, e.g.
>
> select imageID, imageData from Images;
>
> Then you loop over all rows in the resultset with
> sqlite3_step call
> (each call advances to the next row), and for each
> row call
> sqlite3_column_* once for each column you are
> interested in.
>
> Igor Tandetnik
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
>
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users