我使用下面的代码向数据库中保存文件,不提示出错,但读出的文件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;
解决方案 »
- 如何读取CSV文件~~~~~~~~~~~~~~~~~~~
- 谁可以为我解释一下Winsock2中Select是什么意义!
- 在线等...谁知道ADOQuery控件使用的SQL语句中的取字符串中的子字符串函数[大侠请进]
- d6 中indy 组件问题!
- project->option->application里的loadicon按钮怎么不能用了?在线等
- 谁给我这样的程序(读RAR文件,然后新建一个RAR文件,并将读出的内容存在其中)
- 超简单的一个问题。。急!!!
- 急救:关于一个报表统计的问题
- 關於Excel單元格對齊方式???
- 如何动态创建、读、写一个文本文件 ?
- 提问
- 我该把这些函数放在哪里?公用模块还是需要的模块里面?
minercxy(Codewhy)在吗?
保存文件应用image,不是text类型吧,相同的代码,
我用TAdotable,TAdoquery的话都可以正常保存没有问题的。