用ADO连SQL2000(个人版),怎样将文件写进(和取出)数据表中的IMAGE类型字段最方便?我想用SQL语句应能行,但我不会,谁能告诉我怎样做?(100分)

  • 主题发起人 主题发起人 lusj586
  • 开始时间 开始时间
L

lusj586

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADO连SQL2000(个人版),怎样将文件写进(和取出)数据表中的IMAGE类型字段最方便?我想用SQL语句应能行,但我不会,谁能告诉我怎样做?我是用如下方法做的:
adotable1.Append;
adotable1.FieldByName('文件名').AsString:=ExtractFilename(labelededit17.Text);
adotable1.FieldByName('文件大小').AsInteger:=strtoint(labelededit19.Text);
adotable1.FieldByName('文件格式').AsString:=combobox1.Text;
tblobfield(adotable1.FieldByName('文件')).LoadFromFile(LabeledEdit17.Text);
adotable1.Post;
行是行,但我觉得没有用SQL就没有发挥SQL2000的优势。还有就是取出时,我不想让文件保存到临时文件中以免泄密,只能用我提供的控件预览而不允许下载和打开,只有有权限的人才能下载,怎样实现?
 
bcontent := TMemoryStream.Create; //创建内存流

bcontent:=TADOBlobStream.Create(TBlobField(fieldbyname('Atemplet_bcontent')),bmRead);

TBlobField(FieldByName('Adoc_bcontent')).LoadFromStream(bcontent); //用类函数从内存流装载到字段中

然后再用你的控件去读流就可以了。
 
谢谢你能进来,但你的方法和我的有什么两样吗?一个直接读文件,一个读内存流,我想要的是用SQL语句。
 
SQL 语句读出的是二进制代码,所以读出也没有用呀。
 
不能还原吗?这么说保存有文件的数据,要么都用ADOTABLE,要么分两步,保存其它类型用SQL,保存文件用ADOTABLE?这样做不是易出错吗?用ADOTABLE保存后还要重新定位再保存文件?你能回答第二个回题吗?不管怎样,我还是谢谢你,我会给你分的
 
后退
顶部