我使用下面的代码向数据库中保存文件,不提示出错,但读出的文件temp2.htm为1字节,temp1.htm为5k
数据库为sqlserver,保存文件的content字段类型为image;
大家帮帮给看看什麽原因呀!
这些代码是社区中的一位叫 minercxy(Codewhy) 的朋友写的。
Dm_Client.Q_TmpOpen.Edit;
Filetodatabase(DM_Client.Q_TmpOpen,'g:\temp1.htm','content');
Dm_Client.Q_TmpOpen.post;
//Dm_Client.Q_TmpOpen.ApplyUpdates(0);
mstr:='select tmid,aqx,linkaddr,content from '+CurrentDb+' where tmxh='''+m_tmxh+'''';
ExecCommSql(mstr,DM_Client.Q_TmpOpen,'OPEN');
databasetoFile(DM_Client.Q_TmpOpen,'g:\temp2.htm','content');
procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
mfilename:string;
begin
myfile:=Tfilestream.Create(filename,fmopenread);
memsize:=myfile.Size;
inc(memsize);
buffer:=allocmem(memsize);
stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmWrite));
try
Stream.Seek(0, soFromBeginning);
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
end;
procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TblobStream;
begin
myfile:=Tfilestream.Create(filename,fmcreate);
stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmread));
memsize:=stream.Size;
inc(memsize);
buffer:=allocmem(memsize);
try
Stream.Seek(0, soFromBeginning);
stream.Read(buffer^,memsize);
Myfile.Write(buffer^,memsize);
finally
MyFile.Free;
Stream.Free;
end;
end;
数据库为sqlserver,保存文件的content字段类型为image;
大家帮帮给看看什麽原因呀!
这些代码是社区中的一位叫 minercxy(Codewhy) 的朋友写的。
Dm_Client.Q_TmpOpen.Edit;
Filetodatabase(DM_Client.Q_TmpOpen,'g:\temp1.htm','content');
Dm_Client.Q_TmpOpen.post;
//Dm_Client.Q_TmpOpen.ApplyUpdates(0);
mstr:='select tmid,aqx,linkaddr,content from '+CurrentDb+' where tmxh='''+m_tmxh+'''';
ExecCommSql(mstr,DM_Client.Q_TmpOpen,'OPEN');
databasetoFile(DM_Client.Q_TmpOpen,'g:\temp2.htm','content');
procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
mfilename:string;
begin
myfile:=Tfilestream.Create(filename,fmopenread);
memsize:=myfile.Size;
inc(memsize);
buffer:=allocmem(memsize);
stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmWrite));
try
Stream.Seek(0, soFromBeginning);
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
end;
procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TblobStream;
begin
myfile:=Tfilestream.Create(filename,fmcreate);
stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmread));
memsize:=stream.Size;
inc(memsize);
buffer:=allocmem(memsize);
try
Stream.Seek(0, soFromBeginning);
stream.Read(buffer^,memsize);
Myfile.Write(buffer^,memsize);
finally
MyFile.Free;
Stream.Free;
end;
end;
解决方案 »
- windows server 2003下面内存一直增长,是什么原因?
- 用过 reportbuild 制作报表的进来帮帮忙,谢谢~!
- 求助:用adoquery可不可以实现在dbgrid显示,但不更新到数据
- 关于在激光打印机上实现联张打印的问题,请高手指教!
- 编写组件是否需要大量的API知识?谢谢。
- 日期问题
- 大侠帮忙,大量计算时如何让程序响应事件?
- 使用EnumWindows函数的问题,请高手指点迷津!
- 急!高分求救!delphi中如何调api控制"音量控制"中麦克风的静音的选择框.对麦克风静音控制.
- 请告之QRCompositeReport怎么用!!
- 提问
- 我该把这些函数放在哪里?公用模块还是需要的模块里面?
minercxy(Codewhy)在吗?
保存文件应用image,不是text类型吧,相同的代码,
我用TAdotable,TAdoquery的话都可以正常保存没有问题的。