🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.database.ado
Article #2787

Re: storing / retrieving images in a database

#2787
From: Viatcheslav V. Vassiliev
Date: Mon, 17 Mar 2003 06:55
106 lines
3991 bytes
>ADOQuery->Parameters->Items[0]->Assign(NULL);
I do not think it will work, use ADOQuery->Parameters->Items[0]->Value =
Null();

Null() is from Variants.hpp.

>cmdText = "SELECT * FROM Picture ";
cmdText = "SELECT PictureBlob FROM Picture

Get only field you really need.

>      ADOQuery->Open();
>      ADOQuery->Active = true;
This is the same, use one of these lines.

>   TBlobField* myBlob = (TBlobField*)ADOQuery->FieldByName
("PictureBlob");
>    if(myBlob->IsBlob())
>    ...
You check IsBlob() after casting to TBlobField. You may want to use TField*
myBlob = ..., then check IsBlob(). Check also for IsNull. You may want to
clear picture if not IsBlob or IsNull.

>char* temp = new char[MAX_PATH];
Never used.

----------------------------------------------------------------
Regards,
Viatcheslav V. Vassiliev
http://www.oledbdirect.com
The fastest way to access MS SQL Server, MS Jet (MS Access)
and Interbase (through OLEDB) databases.


"lance" <palat_l@tdipower.com> �������/�������� � �������� ���������:
news:3e755596$1@newsgroups.borland.com...
>
> The following code works, but I would like to run it
> past someone knowledgeable for a bit of a critique.
> Basically, I am inserting an image into a database record,
> then later retrieving an image.
>
> The image is shown and saved from a TImage.
>
> Thanks inadvance for your comments.
>
> //---------------------------------------------------------------
> void __fastcall TMainForm::InsertBtnClick(TObject *Sender)
> {
>   AnsiString cmdText;
>
>   cmdText = "INSERT INTO Picture ";
>   cmdText = cmdText + "(PictureNumber,PictureBlob) VALUES (";
>   cmdText = cmdText + Edit1->Text + ",:pic)";
>
>   ADOQuery->Active = false;
>   ADOQuery->SQL->Clear();
>   ADOQuery->SQL->Add(cmdText);
>
>   if(Image1->Picture != NULL)
>     ADOQuery->Parameters->Items[0]->Assign(Image1->Picture);
>   else
>     ADOQuery->Parameters->Items[0]->Assign(NULL);
>
>   try
>   {
>      ADOQuery->ExecSQL();
>   }
>   catch(...)
>   {
>       ShowMessage("error in database insert: " + cmdText);
>   }
>
> }
> //---------------------------------------------------------------
> void __fastcall TMainForm::RetrieveBtnClick(TObject *Sender)
> {
>   AnsiString cmdText;
>   char* temp = new char[MAX_PATH];
>
>   Image1->Picture = NULL;
>
>   cmdText = "SELECT * FROM Picture ";
>
>   ADOQuery->Active = false;
>   ADOQuery->SQL->Clear();
>   ADOQuery->SQL->Add(cmdText);
>
>   try
>   {
>      ADOQuery->Open();
>      ADOQuery->Active = true;
>   }
>   catch(...)
>   {
>       ShowMessage("error in database select: " + cmdText);
>       return;
>   }
>
>   TBlobField* myBlob = (TBlobField*)ADOQuery->FieldByName
("PictureBlob");
>    if(myBlob->IsBlob())
>     Image1->Picture->Assign(myBlob);
> }
> //---------------------------------------------------------------
>
Technical Details
Message-ID: <3e757209@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail
References: <3e755596$1@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: 10698b,2fc3d06c50d0e4ba
X-Google-Attributes: gid10698b,public
X-Google-ArrivalTime: 2003-03-16 23:09:02 PST
From: "Viatcheslav V. Vassiliev" <support@oledbdirect.com>
Newsgroups: borland.public.cppbuilder.database.ado
References: <3e755596$1@newsgroups.borland.com>
Subject: Re: storing / retrieving images in a database
Date: Mon, 17 Mar 2003 09:55:33 +0300
Lines: 108
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
NNTP-Posting-Host: 213.247.201.57
Message-ID: <3e757209@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1047884297 213.247.201.57 (16 Mar 2003 22:58:17 -0800)
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail