J
justWORKER
Unregistered / Unconfirmed
GUEST, unregistred user!
我的目的是,把一个文件存入数据库的FileContent字段中。
// 代码片段如下
Begin
ACLSID := CreateClassID;
AFileName := InFileDir + AStrings.Strings;
AVersion := GetVersion(AFileName);
ASQL := 'Insert Into ' + ADBFile + ' (OBJGUID, FileName,VersionNO,FileContent) Values('+ QuotedStr(ACLSID) + ',' +
QuotedStr(AStrings.Strings) + ','+ QuotedStr(AVersion) +',?)';
AParms.Clear;
// 前三个为STRING而已,后一个字段使用如下方式插入SQL2000
with TParam(AParms.Add) do
begin
DataType:= ftBlob;
Size:=16;
LoadFromFile(AFileName,ftBlob);
end;
// 中间层的接口,大家都在用,应该没有问题。
ADCOMConn.AppServer.ExecSQL(ASQL,PackageParams(AParms));
Break;
end;
执行后,
结果是存入了,可取出来以来,比原文件尺寸大了差不多一倍????!!!!!
不知是何原因??
取的代码如下:
ASQL := 'Select FileName,VersionNO,FileContent From ' + ADBFile;
AClientDataSet := TClientDataSet.Create(ADCOMConn);
try
AClientDataSet.Data:= ADCOMConn.AppServer.GetSQLData(ASQL,null);
AClientDataSet.First;
while not AClientDataSet.Eof do
Begin
AFileName := AClientDataSet.fieldByName('FileName').AsString;
if AFileName<>'' then
TBlobField(AClientDataSet.fieldByName('FileContent')).SaveToFile(OutFileDir + AFileName);
AClientDataSet.Next;
end;
各位大虾,有何高招??
// 代码片段如下
Begin
ACLSID := CreateClassID;
AFileName := InFileDir + AStrings.Strings;
AVersion := GetVersion(AFileName);
ASQL := 'Insert Into ' + ADBFile + ' (OBJGUID, FileName,VersionNO,FileContent) Values('+ QuotedStr(ACLSID) + ',' +
QuotedStr(AStrings.Strings) + ','+ QuotedStr(AVersion) +',?)';
AParms.Clear;
// 前三个为STRING而已,后一个字段使用如下方式插入SQL2000
with TParam(AParms.Add) do
begin
DataType:= ftBlob;
Size:=16;
LoadFromFile(AFileName,ftBlob);
end;
// 中间层的接口,大家都在用,应该没有问题。
ADCOMConn.AppServer.ExecSQL(ASQL,PackageParams(AParms));
Break;
end;
执行后,
结果是存入了,可取出来以来,比原文件尺寸大了差不多一倍????!!!!!
不知是何原因??
取的代码如下:
ASQL := 'Select FileName,VersionNO,FileContent From ' + ADBFile;
AClientDataSet := TClientDataSet.Create(ADCOMConn);
try
AClientDataSet.Data:= ADCOMConn.AppServer.GetSQLData(ASQL,null);
AClientDataSet.First;
while not AClientDataSet.Eof do
Begin
AFileName := AClientDataSet.fieldByName('FileName').AsString;
if AFileName<>'' then
TBlobField(AClientDataSet.fieldByName('FileContent')).SaveToFile(OutFileDir + AFileName);
AClientDataSet.Next;
end;
各位大虾,有何高招??