Inserting images as BLOBs - any way to avoid using base64encode?
Jan Schenkel
janschenkel at yahoo.com
Mon Aug 6 13:56:59 EDT 2007
--- Terry Judd <tsj at unimelb.edu.au> wrote:
> Hi - I'm about to use SQLite to store all the
> resources for a large ed
> application I'm about to start building and was
> wondering whether there was
> any way to get images into and out of the database
> without having to
> base64encode/decode them. It looks like the encoding
> process adds about 30%
> to the file size, which for this project could add
> an extra 100 MB or more
> to the database file.
>
> Terry...
>
Hi Terry,
You can try and use the "query with placeholder" style
to push binary data into the database:
##
put URL("binfile:" & tFilePath) into tBinaryData
put "INSERT INTO images (:1, :2)" into tQuery
revExecuteSQL gConnection, tQuery, "tFilePath", "*b" &
tBinaryData
put the result into tResult
if char 1 to 8 of tResult is "revdberr" then
answer error tResult
else
-- insert succeeded
end if
##
If the images are large, you'll want to use the
revQueryDatabaseBLOB function to get the data out as a
cursor. Then you can use the function
'revDatabaseColumnNamed' to extract the binary data.
##
put "SELECT * FROM images" into tQuery
put revDatabaseQueryBLOB(gConnection, tQuery) into
tCursor
if tCursor is not a number then
answer error tCursor
else
put revDatabaseColumnNamed(tCursor,"binData") into
tBinData
-- do what you need to do
-- ...
-- clean up the cursor afterwards!
revCloseCursor tCursor
end if
##
Base64Encoding is great if you have to move stuff
accross platforms and technologies; but the above may
do the trick for you.
Hope this helped,
Jan Schenkel.
Quartam Reports & PDF Library for Revolution
<http://www.quartam.com>
=====
"As we grow older, we grow both wiser and more foolish at the same time." (La Rochefoucauld)
____________________________________________________________________________________
Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
http://farechase.yahoo.com/
More information about the use-livecode
mailing list