我想h163_2说的是把一个文件插入到数据库中吧,不是把excel文件中的数据
导入数据库。
如果是把文件插入到数据库中可以参照插入图片文件的方法
添加/读出文件到access数据库-yanghaisheng
//函数名: AddDocIntoTable
//参数:
// aFileName:string 文件名,含全路径
// Table:TADOTable 表名,所用的数据表控件的名称
//返回:boolean 添加到表成功则返回true,否则返false
//描述: 本函数将指定的文件导入数据库中.
function TfrmMain.AddDocIntoTable(aFileName:string;Table:TADOTable):boolean;
var
MStream: TMemoryStream;
FileName:string;
begin
if(not FileExists(aFileName)and (ExtractFileExt(aFileName) = ''))then
begin
result:=false;
exit;
end;
try
//得到文件名
FileName:=ExtractFilename(aFileName);
if not Table.Active then Table.Active :=true;
//装载文件到流
MStream:=TMemoryStream.create;
try
MStream.LoadFromFile(aFileName);
except
ShowMessage('不能打开文件,这个文件可能被其他程序打开了。');
MStream.Free;
Result:=false;
exit;
end;
MStream.Position :=0;
//添加数据到数据库中
Table.Append ;
Table.FieldByName('FileName').asString :=FileName;
TBlobField(Table.FieldByName('File')).LoadFromStream(MStream);
Table.Post ;
//释放流
MStream.Free ;
except
//出错返回
if(MStream<>nil)then MStream:=nil ;
Result:=false;
exit;
end;
Result:=true;
end;
//函数名: SaveTableDocToFile
//参数:
// aFilePath:string 路径,最后字符不是'/'
// Table:TADOTable 表名,所用的数据表控件的名称
//返回:boolean 保存文件成功则返回true,否则返false
//描述: 本函数将从数据库读取当前指针所指记录,并写入文件中.
function TfrmMain.SaveTableDocToFile(aFilePath:string;Table:TADOTable):boolean;
var
MStream:TStream;
MFileStream:TFileStream;
pImage: pointer;
FileName:string;
aFileName:String;
begin
try
if not Table.Active then Table.Active :=true;
//从数据库读出文件信息
MStream:=Table.CreateBlobStream(Table.FieldbyName('File'),bmRead);
FileName :=Table.FieldByName('FileName').asString ;
//组合文件名
aFileName := aFilePath+'/'+ FileName;
MStream.Position:=0;
GetMem(pImage, MStream.Size);
//创建文件
MFileStream := TFileStream.Create(aFileName, fmCreate);
MStream.Read(pImage^,MStream.Size);
MFileStream.Write(pImage^ ,MStream.Size);
FreeMem(pImage);
MFileStream.Free ;
MStream.Free ;
except
if(MStream<>nil)then MStream:=nil ;
if(MFileStream<>nil)then MFileStream:=nil ;
Result:=false;
exit;
end;
Result:=true;
end;