Re: Getting BLOB fields
Michal Blazejczyk <[email protected]> Fri, 10 May 2002 13:25:45 -0400
| Newsgroups | gmane.comp.windows.devel.oledb.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
This is not the case since we retrieve only one record at a time. We use
the following command in our accessor: "SELECT Data FROM Session WHERE
(ID=?)". Of course, the accessor also contains a LONG m_ID field
mapped properly.
Regards
Michal
> -----Original Message-----
> From: Yuancai Ye [mailto:[email protected]]
> Sent: Friday, May 10, 2002 13:15
> To: [email protected]
> Subject: Re: [OLEDB_DEV] Getting BLOB fields
>
>
> Hi,
> Did you release the BLOB object after retrieving a
> BLOB before moving to the next record?
>
> Yuancai (Charlie) Ye
> See 30 real well-tested advanced OLEDB samples
> Use of free SocketPro for creating super client and
> server application with numerous samples
> www.udaparts.com
>
> --- Michal Blazejczyk
> <[email protected]> wrote:
> > Hello everyone,
> >
> > We have a problem with our database-access code that
> > uses ATL.
> >
> > We have a BLOB field in a SQL Server database. We
> > access it using a
> > specialized accessor class.
> >
> > Later on the code look like this:
> > CCommand<CAccessor<COurBLOBAccessor> >
> > BLOBTab;
> > BLOBTab.ClearRecord(); // set all
> > fields to 0
> > BLOBTab.Open(Session);
> > BLOBTab.MoveFirst();
> > // use BLOBTab.m_Data to get the BLOB data
> >
> > The session object is valid, the accessor gets bound
> > properly, Open and
> > MoveFirst return S_OK. In a normal case, the call to
> > MoveFirst (more
> > specifically, a call to IRowset::GetData) sets
> > BLOBTab.m_Data to a valid
> > ISequentialStream object.
> >
> > However, in one case BLOBTab.m_Data isn't set in
> > IRowset::GetData and is
> > left NULL. Both IRowset::GetData and MoveFirst
> > return S_OK but
> > retrieving the data is impossible.
> >
> > What can be the problem?
> >
> > Michal Blazejczyk
> >
> > This is how the accessor class looks like:
> >
> > class COurBLOBAccessor
> > {
> > public:
> > ISequentialStream* m_Data;
> > ULONG m_Data_Length;
> > ULONG m_Data_Status;
> >
> > BEGIN_COLUMN_MAP(CSISessionBLOBAccessor)
> > BLOB_ENTRY_LENGTH_STATUS(1,
> > IID_ISequentialStream, STGM_READ,
> > m_Data, m_Data_Length, m_Data_Status)
> > // BLOB_ENTRY_LENGTH_STATUS is our own
> > macro.
> > // It seems to be working fine.
> > END_COLUMN_MAP()
> >
> > // .... Other stuff
> > };
> >
> > You can read messages from the OLEDB_DEV archive,
> > unsubscribe from OLEDB_DEV,
> > or subscribe to other DevelopMentor lists at
> http://discuss.develop.com.
>
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Shopping - Mother's Day is May 12th!
> http://shopping.yahoo.com
>
> You can read messages from the OLEDB_DEV archive, unsubscribe
> from OLEDB_DEV,
> or subscribe to other DevelopMentor lists at
http://discuss.develop.com.
You can read messages from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV,
or subscribe to other DevelopMentor lists at http://discuss.develop.com.