如何将Object 存入数据库中。(100分)

  • 主题发起人 主题发起人 lizhao
  • 开始时间 开始时间
L

lizhao

Unregistered / Unconfirmed
GUEST, unregistred user!
我要做个类似于Corldraw的应用程序,
其中每一个图元对应着一个Object。
我想将图寸入到数据库中,不知有何高见。
此外,有做过这方面的高手,能否将你的经验告诉我。
E_mail:li.zhao@263.net
 
如果不在意大小的话,可以使用blob字段.
将每个对象存成流,存入blob字段,这时对象的尺寸,以及其它属性都应该没问题.
当然,这只是很苯的办法,最后在考虑吧.
 
用TBlobField是可以实现的.
可以把您的Object存入流中,再用TBlobField.LoadFromStream
从流中读出来,存入数据库就行了.详见:[OLE / Automation]问题
中的<a href="寻求OLE与TBlob数据库字段的数据交换的实施步骤">寻求OLE与TBlob数据库字段的数据交换的实施步骤</a>等几个问题的讨论
 
对象直接就可以存到BLOB字段中,用TBlobStream就可以了,
但必须是TComponent的子类,用TBlobStream.WriteComponent写进去,
用TBlobStream.ReadComponent读出来。
 
存储图形, 应该存储图元的类别和参数, 而不是存储整个Class. 最简单的办法是将
图形存到一个纪录型文件. 存储到数据库也是可以的, 但是需要定义一个能够容纳全
部图元的纪录, 例如有如下几种图元看一看能够用什么样的纪录:

Drawing: Left, Top, Width, Height, BackColor;
Pen: Color, Width, Mode;
Brush: Color, Style;
Font: Name, size, Style;
Line: x1, y1, x2, y2;
Circle: C1, C2, R;
Arc: Cx, Cy, R, StartAngle, EndAngle;
Text: Top, Left, Width, Height, Text;
Rect: Top, Left, Width, Height;

对于上述几个图元, 用一个如下的纪录是可以的:

字段1: Object, String
字段2: N1, Float
字段3: N2, Float
字段4: N3, Float
字段5: N4, Float
字段6: N5, Float
字段7: Test, String

这样做的好处是, 数据库易读, 可以手工修改; 不好之处是数据库中有一点浪费.
绘图时候读到 Pen 就改变Pen的设置, 读到 Arc 就取相应的参数画 Arc.
 
接受答案了.
 
后退
顶部