Ron - 

this is my select statement:
 
sqlite> select imageID, hex(imageData) from Images;
1|00000300060009000C000F001200150018001B00
2|0000010002000300040005000600070008000900
3|0000010002000300040005000600070008000900

-sorry for the confusion i was just copying and
pasting wrong. looks like everything looks fine if you
were to space these out. 


--- "Wilson, Ron P"
<[EMAIL PROTECTED]> wrote:

> you are delimiting your dwords wrong.  reverse the
> byte order.  this
> resolves your leading and trailing 00 problem.
> 
> sqlite> select imageID, hex(imageData) from Images;
> 1|0000 0300 0600 0900 0C00 0F00 1200 1500 1800 1B00
> 2|0000 0100 0200 0300 0400 0500 0600 0700 0800 0900
> 3|0000 0100 0200 0300 0400 0500 0600 0700 0800 0900
> *************************************************** 
> 
> RW
> 
> Ron Wilson, S/W Systems Engineer III, Tyco
> Electronics, 434.455.6453
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf
> Of C S
> Sent: Wednesday, March 12, 2008 12:07 PM
> To: General Discussion of SQLite Database
> Subject: Re: [sqlite] SQL Blobs - what am i doing
> wrong here?(code
> inside)
> 
> 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
> > sqlite-users@sqlite.org
> >
>
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
> sqlite-users@sqlite.org
>
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
>
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
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to