在Delphi中怎样实现数据库中超长文本(包括表格与图片)字段的编辑与存取? 主要运用TBlobField,TBlobStream两类,LoadFromStream,SaveToStream,LoadFromFile,SaveToFile,....编辑可用Memo关联,帮助写的明白! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是图片可以用sql写入blob: Query1.SQL.Add(' insert into Table(BlobField)'); Query1.SQL.Add(' values (:ABlobField)'); Query1.Parameters.ParamByName('ABlobField').LoadFromStream (ABlobStream, ftBLOB); Query1.ExecSQL; 可以把你的图片框赋给ABlobStream如果是文本也可以用sql写入memo: Query1.SQL.Add(' insert into Table(BlobField)'); Query1.SQL.Add(' values (:ABlobField)'); Query1.Parameters.ParamByName('ABlobField').LoadFromStream (ABlobStream, ftMemo); Query1.ExecSQL;主要都是把memo,blob(picture)转换成stream就行了 var YourStream : TMemoryStrem; begin YourStream := TMemoryStream.Create; try Query1.Close; Query1.SQL.CLear; Query1.SQL.Add('Select BlobField from Table'); Query1.Open; Query1.First; YourStream.Clear; TBlobField(ADOQuery1.FieldByName('BlobField')).SaveToStream(YourStream); // ... 以下你可以把你的流装载到TMemo或TPicture,可以显示它 finally YourStream .Free; end; end; var YourStream : TMemoryStrem; begin YourStream := TMemoryStream.Create; try Query1.Close; Query1.SQL.CLear; Query1.SQL.Add('Select BlobField from Table'); Query1.Open; Query1.First; YourStream.Clear; TBlobField(Query1.FieldByName('BlobField')).SaveToStream(YourStream); // ... 以下你可以把你的流装载到TMemo或TPicture,可以显示它 finally YourStream .Free; end; end; 好象不能用TQuery,因为它的对大对象的处理受Database的CacheSize影响。默认为32K,如果你的对象大于32K,可能会有问题.解决方案:用TTable。 no,TTable不能用于解决c/s模式的数据库问题,效率低下,那个方法绝对可行,我经常用,建议你试试. 重新连接数据库的处理? 赶场,散分,还不算晚吧! 哪个大虾告诉我TLocateOption 这个类怎么用 记录怎样显示 求助时间查询问题! 有没有根据动态数据来作曲线的控件,在那能找到这方面的资料 做个调查,大家认为哪个版本的DELPHI最成熟? 怎样写播放MPEG One 文件的程序 Delphi自带的控件好像不行 有关SAVE DAIGLE的问题? 我的问题!各们程序员帮我一下吧 Dll 问题 (急)帮忙啊! 如何编程将一程序中的一edit中的text拖曳到另一个程序的edit的text中去?
Query1.SQL.Add(' insert into Table(BlobField)');
Query1.SQL.Add(' values (:ABlobField)');
Query1.Parameters.ParamByName('ABlobField').LoadFromStream (ABlobStream, ftBLOB);
Query1.ExecSQL;
可以把你的图片框赋给ABlobStream
如果是文本也可以用sql写入memo:
Query1.SQL.Add(' insert into Table(BlobField)');
Query1.SQL.Add(' values (:ABlobField)');
Query1.Parameters.ParamByName('ABlobField').LoadFromStream (ABlobStream, ftMemo);
Query1.ExecSQL;
主要都是把memo,blob(picture)转换成stream就行了
YourStream : TMemoryStrem;
begin
YourStream := TMemoryStream.Create;
try
Query1.Close;
Query1.SQL.CLear;
Query1.SQL.Add('Select BlobField from Table');
Query1.Open;
Query1.First;
YourStream.Clear;
TBlobField(ADOQuery1.FieldByName('BlobField')).SaveToStream(YourStream);
// ... 以下你可以把你的流装载到TMemo或TPicture,可以显示它
finally
YourStream .Free;
end;
end;
YourStream : TMemoryStrem;
begin
YourStream := TMemoryStream.Create;
try
Query1.Close;
Query1.SQL.CLear;
Query1.SQL.Add('Select BlobField from Table');
Query1.Open;
Query1.First;
YourStream.Clear;
TBlobField(Query1.FieldByName('BlobField')).SaveToStream(YourStream);
// ... 以下你可以把你的流装载到TMemo或TPicture,可以显示它
finally
YourStream .Free;
end;
end;
默认为32K,如果你的对象大于32K,可能会有问题.
解决方案:用TTable。
那个方法绝对可行,我经常用,建议你试试.