如何把文件存在数据库里?定义成什么类型? (100分)

  • 主题发起人 主题发起人 xiaod
  • 开始时间 开始时间
X

xiaod

Unregistered / Unconfirmed
GUEST, unregistred user!
由于我的程序是网络版,
所以当我要发送一个文件时,
我不能简单的把文件的路径存在数据库里,
而必须把文件本身存在数据库里,
这样别的机子才能通过服务器更好的访问,
请问如何实现?
SQL Server2000+ADO
 
什么数据库?使用Image/Text等类型
将文件写入数据库
tblobfield(fields).loadfromfile('e:/afile.txt');
或者使用Query的参数
query1.params.loadfromfile('e:/afile.txt',ftblob);
 
什么数据库呀,用二进制字段,每种数据库具体称谓不同,但都提供这样的字段
 
什么数据库,说清
 
使用二进制的数据类型啊。下面的是添加到数据库中。
procedure TForm1.AddToDB(Sender:TObject);
var
sFileName:String;
function BlobtoString(const FileName:string):string;
begin
with TFileStream.Create(FileName,fmOpenRead) do
try
SetLength(Result,Size);
Read(Pointer(Result)^,Size);
finally
Free;
end;
end;
begin
if (Opdlg.Execute) then //Opdlg 是一个OpenDialog
begin
sFileName:=Opdlg.FileName;
ADS.FieldByName('二进制字段').AsString:=BlobtoString(sFileName); //ADS是一个TADODataSet组件
ADS.Post;
end;
end;
 
飘摇客说的没错,但有一点要注意,就是如果Bde用到的BlobCache
那么传送文件的大小要受到BlobSize的限制,解决方法有两个:
1、将Bde配置中BlobSize调大;
2、如果用Query控件,设它的RequestLive=True
 
从中文开发在线抄的
数据库SQL Server,存放文件的字段类型Image
Create Table MyTable
(
FileName VarChar(20),
FileSource Image
)
存放文件到数据库

var FileName :String;FileName := ExtractFileName(OpenDialog1.FileName);with Query dobegin Close; Sql.Clear; Sql.Add('INSERT INTO MyTable VALUES (:FileName,:FileSource)'); ParamByName('FileName').AsString := FileName; ParamByName('FileSource').LoadFromFile(OpenDialog1.FileName,ftBolob); ExecSQL;end;



从数据库中取出文件

var FileName :String;begin with Query do begin Close; Sql.Clear; Sql.Add('SELECT * FROM MyTable WHERE FileName = '?''); Open; FileName := 'c:/'+FieldByName('FileName').AsString; (FieldByName('FileSource') AS TBlobField).SaveToFile(FileName); end;end;
 
用Blob类型
 
多人接受答案了。
 
后退
顶部