Re: Getting BLOB fields
Yuancai Ye <[email protected]> Fri, 10 May 2002 10:58:10 -0700
| Newsgroups | gmane.comp.windows.devel.oledb.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, What version of VC++ are you using? 7 or 6. I get confused. Believe me. If it is a parameterized statement, you must use two accessors at least. If your statement is just a simple SQL query, one accessor is fine in most cases. 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: > Hi, > > As far as I can figure out the code (I didn't write > it), the '?' char > stands for 'will be replaced on runtime by the value > of the ID field of > the accessor object'. The '?' appears in the code > itself, NOT on > runtime. I guess that's how ATL works. > > Regards > > Michal > > > -----Original Message----- > > From: Yuancai Ye [mailto:[email protected]] > > Sent: Friday, May 10, 2002 13:47 > > To: [email protected] > > Subject: Re: [OLEDB_DEV] Getting BLOB fields > > > > > > Hi, Michal: > > I saw the char '?' with your SQL statement in > your > > previous message. So you want to open a corrupted > > Access file. Maybe the corrupted access file leads > to > > this problem. > > > > 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: > > > Hi, > > > > > > What do you mean, "parametrized statement"? As > far > > > as I can see, there's > > > only one accessor, it retrieves two fields: ID > and > > > Data. > > > And this works in ALMOST ALL cases. We've never > > > encountered this kind of > > > problem before. > > > What might help is that the guy who sent us this > > > database file (ooops, > > > made a mistake below: this is MS Access, not SQL > > > Server!) had a problem > > > with the database, it was corrupted or something > (he > > > was getting weird > > > errors while trying to open the database file in > MS > > > Access). > > > > > > Regards > > > > > > Michal > > > > > > > -----Original Message----- > > > > From: Yuancai Ye [mailto:[email protected]] > > > > Sent: Friday, May 10, 2002 13:35 > > > > To: [email protected] > > > > Subject: Re: [OLEDB_DEV] Getting BLOB fields > > > > > > > > > > > > Hi, > > > > You use a parameterized statement to > retrieve a > > > > rowset. If so, two accessors are involved at > > > least. I > > > > usually use OleDBPro instead of ATL consumer > > > > templates. If you like, see the samples BLOBs > and > > > > AOTBLOB inside the OleDBPro module. > > > > > > > > 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: > > > > > 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; > === message truncated === __________________________________________________ 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.