Advertisement

11.16.2005 at 02:54PM PST, ID: 21633695
[x]
Attachment Details

Store object to database

Asked by LiveBootleg in Delphi Programming

Tags: object, database, store

Hi,

I would like to save a object that I created to database.  I got this far looking at other solutions on EE (Save object in data base, Q_11075005).

I have created a Firebird database with two fields (Supplier_ID - Integer, sup_option - Binary BLOB).

The code below works not 100%.  In Button1Click I write my object to database.  The record is created and all looks good.  But when I read the blob field from DB to populate my user object (Button2Click) none of the properties of the object are set.

One thing I have noticed is that 'sizeof(usr)' (Button1Click) always returns 4, no matter how long I make my Fullname and Password properties.  Is this correct?  I guess this is my problem.  Only 4 bytes of my object are written to the DB.

procedure TForm_Main.Button1Click(Sender: TObject);
var
  usr : TSPLoginUser;
  bstream : TStream;
begin
  //The object that I would like to store in the DB
  usr := TSPLoginUser.Create;
  usr.Username := 'addey';
  usr.Fullname := 'Jacques';
  usr.Password := 'password';

  //Open query and create new record.
  dm.IBOQuery1.Open;
  dm.IBOQuery1.Append;
  dm.IBOQuery1SUPPLIER_ID.Value := 5;
  bstream := dm.iboQuery1.CreateBlobStream(dm.IBOQuery1SUP_OPTION,bmWrite);
  bstream.Write(usr,sizeof(usr));  //SizeOf(usr) always returns 4
  dm.IBOQuery1.Post;
  dm.IBOQuery1.Close;
end;

procedure TForm_Main.Button2Click(Sender: TObject);
var
  usr : TSPLoginUser;
  stream : TStream;
begin
  dm.IBOQuery1.Open;
  stream := dm.IBOQuery1.CreateBlobStream(dm.IBOQuery1SUP_OPTION,bmRead);
  stream.Read(usr,sizeof(usr));//After this none of the usr object's properties are set
  dm.IBOQuery1.Close;
end;

Thanks!
Start Free Trial
[+][-]11.16.2005 at 09:20PM PST, ID: 15309443

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]11.17.2005 at 01:23AM PST, ID: 15310093

Assisted solutions are selected by the member who asked the question as a comment that contributed to their question's solution.

Start your 7-day free trial to view this Assisted Solution or ask the Experts your question.

 
[+][-]11.18.2005 at 06:14AM PST, ID: 15319578

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zone: Delphi Programming
Tags: object, database, store
Sign Up Now!
Solution Provided By: kemanetzis
Participating Experts: 3
Solution Grade: B
 
 
[+][-]11.29.2005 at 06:38AM PST, ID: 15380105

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]01.04.2006 at 06:13AM PST, ID: 15607720

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32