在interbase中,关于字段类型的选择(100分)

  • 主题发起人 delphi188
  • 开始时间
D

delphi188

Unregistered / Unconfirmed
GUEST, unregistred user!
1、在interbase中,选择保存文章的表,用什么字段类型?比如一篇比较长的文章,
比memo类型的字段容量更大的字段类型是什么?

2 pardox表中的binary类型的字段的内容在sql exploer中只能显示出(BLOB),
如何显示?
 
1.如果小于32768个字符的文章建议直接用Char类型,如果大于用BLOB(<32GB)类型
 
如果是保存文章,干脆就用blob类型吧.
 
用Blob类型,用流方法来进行数据的存取;
可以参考TdataSet.CreateBlobStream
 
to foxtailhuliwei:麻烦你给段代码参考
 
Interbase里blob字段存取:TBlobField("").XXX
 
to delphi188
我可能答非所问了,你的问题是如何在sql explorer中显示
pardox表中的binary类型的字段如何显示?这个我也不知道,blob类型的字段
要经过处理才能访问,因为里面存放的东西只有写程序的人知道;
我以为你是要从数据库中读取Blob类型的字段
{功能:从表中把读取DBGrid1的列格式,如列的颜色、字体等}
procedure TTest.OpenFromTable;
var
Stream: TStream;
begin
with qrytemp do
begin
Close;
Sql.text:='select * from face where faceid=1';
Open;
if FieldByName('FaceId').AsString='' then
begin
Close;
exit;
end;
Stream := CreateBlobStream(Fieldbyname('facedata'), bmRead);//换成你要处理的存放文章的字段
try
DBGrid1.Columns.LoadFromStream(Stream);//很多类都有loadfromstream方法,TStrings也有,你可以
//把文章内容放到memo中去;如 //memo1.lines.loadfromstream(stream)
finally
Stream.Free;
Close;
end;
end;
end;
 
procedure TTest.btnSaveClick(Sender: TObject);
var
Stream: TStream;
begin
with qrytemp do
begin
Close;
Sql.text:='select * from face where faceid=1';
Open;
if Locate('FaceId',FFaceId,[]) then
Edit
else
Append;
Stream := CreateBlobStream(FieldByName('FaceData'), bmReadWrite);
try
DBGrid1.Columns.SaveToStream(Stream); //换成memo1.lines.SaveToStream(Stream)
finally
Stream.Free;
end;
FieldByName('FaceId').AsInteger := FFaceId;
Post;
end;
end;
 
多谢foxtailhuliwei,你的名字好长:)
 
顶部